据说是月薪2W的笔试题

简介: 话说,有这样一道据说是月薪2W的笔试题: #include "stdio.h"void print(){*}void main(){}         要求在*部分写代码使整个程序运行后输出“hello world”,有些人说,这还不简单啊,于是写出这样的代码: view source print? 01.

话说,有这样一道据说是月薪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的话可以不要这一句

 

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
5月前
|
存储 Java 编译器
C++每日选择题—Day1
C++每日选择题—Day1
|
5月前
|
测试技术 Python
入职名企必备系列,leecode三除数问题
入职名企必备系列,leecode三除数问题
20 0
|
12月前
|
机器学习/深度学习 算法 数据库
华科2018年笔试题大概
华科2018年笔试题大概
|
12月前
|
算法 搜索推荐
2015年华科834复试笔试题
2015年华科834复试笔试题
|
12月前
|
算法 调度 数据库
2016年华科834复试笔试题
2016年华科834复试笔试题
|
JavaScript 算法 前端开发
我曾经培训新员工的时候出的jsjq入职笔试题,真的是想着法子送分了。。。
我曾经培训新员工的时候出的jsjq入职笔试题,真的是想着法子送分了。。。
我曾经培训新员工的时候出的jsjq入职笔试题,真的是想着法子送分了。。。
|
C语言
【毕业季——牛客刷题】C语言实现猜数字大小游戏
【毕业季——牛客刷题】C语言实现猜数字大小游戏
83 0
【毕业季——牛客刷题】C语言实现猜数字大小游戏
|
前端开发
2020年冬季前端笔试题总结
2020年冬季前端笔试题总结
2020年冬季前端笔试题总结
|
前端开发 JavaScript Java
Java开发岗笔试题,薪资翻倍
Java开发岗笔试题,薪资翻倍
Java开发岗笔试题,薪资翻倍
|
存储 SQL 算法