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

3
我使用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

程序中文本大小差异的原因是什么,可能的原因有哪些?


1
标准明确要求C99编译器生成的可执行文件比其C89版本更大。 - user529758
有任何特定的原因吗? - ArunMKumar
1
看到在不同的编译器/针对不同架构下的表现也会很有趣。这可能只是GCC编译器中为不同标准编写的优化器不同,因此这是特定于编译器的。 - stormCloud
1个回答

1

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

-> % 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标志甚至会改变结果。

尝试了同样的事情...但我的输出与你的不同,我在C99标准下仍然得到了更大的文件大小。也许这与我们正在编译的程序有关。我将尝试使用一个简单的“Hello World”程序,并更新您的结果。 - ArunMKumar
1
说实话,这种差异背后没有任何合理的解释。 - Stefano Sanfilippo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接