据说是月薪2W的笔试题

简介:

话说,有这样一道据说是月薪2W的笔试题:

#include "stdio.h"
void print()
{
*
}
void main()
{
}

        要求在*部分写代码使整个程序运行后输出“hello world”,有些人说,这还不简单啊,于是写出这样的代码:

01. #include "stdio.h"
02. void print()
03. {
04.     printf("hello world");
05. }
06. void main()
07. {
08.     print();
09. }

        这样写的确是没问题,但是违背了题目的要求,因为题目不允许修改main函数,这下仿佛我们就没辙了,因为我们学习C/C++语言的时候,明确说明main函数是程序的主函数,也是程序的入口函数,可是现在主函数为空,那怎么会执行子函数呢?

        其实这个笔试题考察的不是我们对基本知识的理解,而是要学会发现问题解决问题的能力,有时候,当一条路走不通的时候,我们就要换一条路,通过查找资料,我们发现其实C++是可以修改入口函数的。

        这里需要一个C++预编译标识符 #pragma comment()   来帮助我们搞定这个问题。他的使用类型是:pragma comment( comment-type ,["commentstring"] )。

        comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。

        commentstring是一个提供为comment-type提供附加信息的字符串。

        这里我们需要使用linker来修改链接设置:

#pragma comment(linker, "/entry:print")

        看到了么?通过/entry参数来设置程序链接时候的主函数为print,这样,就相当于print函数是整个程序的主函数,他替换了main函数的作用,相反的,main函数则成为了一个子函数

        完整的代码和运行结果如图所示:

        至于#pragma comment(lib, "msvcrt.lib")是因为使用了puts函数,如果使用printf的话可以不要这一句

 






本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2013/04/25/3042531.html,如需转载请自行联系原作者

目录
相关文章
|
机器学习/深度学习 算法 数据库
华科2018年笔试题大概
华科2018年笔试题大概
|
算法 调度 数据库
2016年华科834复试笔试题
2016年华科834复试笔试题
|
算法 搜索推荐
2015年华科834复试笔试题
2015年华科834复试笔试题
|
存储 语音技术 芯片
编译原理期末题型
编译原理期末题型
218 0
编译原理期末题型
AcWing 669. 加薪
AcWing 669. 加薪
113 0
AcWing 669. 加薪
|
NoSQL Java 关系型数据库
月薪18k 和 月薪38K的程序员差距在哪里?
回想自己做开发的这八年多,我获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,我都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年 第二年的时候我就在...
2166 0
|
架构师 Java 程序员
月薪8k和月薪38K的程序员差距在哪里?
回想做开发的这八年多,获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年 第二年的时候在想,自己还要这样吗? 当然是否定的,不可能的...
1250 0