今天深信服的一道笔试题

scorpio_tiger 2008-11-07 10:26:51
一个程序(有很多的cpp,h文件)为什么编译成release版本生成的可执行文件过大? 如何检查 ? 大家讨论一下!
...全文
324 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Davidvictor 2008-11-07
  • 打赏
  • 举报
回复
如果每一个文件都包含有很多不必要的头文件,是不是也会造成这个问题呢
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 scorpio_tiger 的回复:]
顺便再问一题,题型如下
C/C++ code#definef(x) printf("para"#x" is %d",_____)intmain(intargc,char*argv[])
{intpara1=2;intpara2=9;intpara3=10;
cout<<f(2)<<endl;return1;
}
要求输出
para1 is 2
para2 is 9
para3 is 10
[/Quote]

#define f(x) printf("para"#x" is %d",para##x)

这样就好了啊
scorpio_tiger 2008-11-07
  • 打赏
  • 举报
回复
更正

#define f(x) printf("para"#x" is %d",_____)
int main(int argc, char *argv[])
{
int para1 = 2;
int para2 = 9;
int para3 = 10;
cout << f(1) << endl;
cout << f(2) << endl;
cout << f(3) << endl;
  • 打赏
  • 举报
回复
今年深信服的笔试很简单啊,不知道面试会考啥。。。
scorpio_tiger 2008-11-07
  • 打赏
  • 举报
回复
顺便再问一题,题型如下

#define f(x) printf("para"#x" is %d",_____)
int main(int argc, char *argv[])
{
int para1 = 2;
int para2 = 9;
int para3 = 10;
cout << f(2) << endl;
return 1;
}

要求输出
para1 is 2
para2 is 9
para3 is 10
  • 打赏
  • 举报
回复
LZ你接到面试通知没??
XiaoMii 2008-11-07
  • 打赏
  • 举报
回复
可以看下设置
liu3xing3long 2008-11-07
  • 打赏
  • 举报
回复
有可能是编译链接的问题,在vs2005中有链接的选项,是否把库打包到exe中,如果依赖库很多并且打包的话,就会很大,当然也可能和release的设置有关系,所谓debug和release只是编译器的一些开关设置的不同而已,比如有的优化开关没开之类的
jia_xiaoxin 2008-11-07
  • 打赏
  • 举报
回复
1.可能将一些数据文件一起编译到可执行文件中区了。
2.使用的是静态链接。
chaojiew 2008-11-07
  • 打赏
  • 举报
回复
编译器的问题?
太乙 2008-11-07
  • 打赏
  • 举报
回复

up~~





64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧