c - C89 和 C99 标准中可执行文件大小的差异

标签 c size nm

<分区>

我使用 GCC 制作了一个可执行文件

$ gcc Q1.c -save-temps -std=c89 -o Q1
$ size Q1
text       data     bss     dec     hex filename
1509        264       8    1781     6f5 Q1

然后我这样做

$ gcc Q1.c -save-temps -std=c99 -o Q1
$ size Q1
text       data     bss     dec     hex filename
1544        264       8    1816     718 Q1

什么可能导致程序的文本大小不同,可能的原因是什么?

最佳答案

没有具体原因。由于更严格的标准,可能会有不同的优化。在我的电脑上:

-> % gcc test.c -save-temps -std=c89
-> % size a.out 
   text    data     bss     dec     hex filename
   1093     568       8    1669     685 a.out
-> % gcc test.c -save-temps -std=c99 
-> % size a.out                     
   text    data     bss     dec     hex filename
   1093     568       8    1669     685 a.out

这是高度经验主义的。也许使用 -O 标志甚至会改变结果。

关于c - C89 和 C99 标准中可执行文件大小的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16425143/

相关文章:

c++ - 使用对讲机进行远程内存访问

c - 我无法解决 "segmentation fault: 11"

c++ - 使用 Frank Luna 的技术创建 3d 平面 : what are sinf and cosf?

c - 如何在 vim 中为 #include<stdio.h> 创建别名

ios - ios chrome 上大小不同的 unicode 圆圈

java - 如何动态更改 JFrame 大小

c++ - 静态数组的大小

c++ - 抽象类使用shared_ptr时如何在nm或objdump中找到函数符号?

c - 重复符号和应用程序崩溃

c - 在 Mac OS X 上以编程方式枚举动态库中的符号