差异在C89和C99的标准可执行文件的大小
问题描述:
我做了使用GCC差异在C89和C99的标准可执行文件的大小
$ 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
什么也有可能出现的文字大小引起differrence该计划,可能的原因是什么?
答
没有具体原因。由于更严格的标准,可能会有不同的优化。在我的电脑上:
-> % 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
标志甚至会改变结果。
+0
试过同样的事情..但我的输出不同于你的我仍然有更大的文件大小在C99标准。也许它与我们正在编译的程序有关。我将用一个简单的“地狱世界”程序来尝试这个方法,并用结果更新你。 – ArunMKumar 2013-05-07 18:04:49
+1
严肃地说,答案是没有差异背后的理由。 – 2013-05-07 18:06:38
该标准明确要求C99编译器生成比C89等效的更大的可执行文件。 – 2013-05-07 17:33:56
有什么具体原因? – ArunMKumar 2013-05-07 17:38:00
是的:纯粹的讽刺。 – 2013-05-07 17:39:35