2013-05-07 27 views
3

我做了使用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该计划,可能的原因是什么?

+1

该标准明确要求C99编译器生成比C89等效的更大的可执行文件。 – 2013-05-07 17:33:56

+0

有什么具体原因? – ArunMKumar 2013-05-07 17:38:00

+0

是的:纯粹的讽刺。 – 2013-05-07 17:39:35

回答

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

+0

试过同样的事情..但我的输出不同于你的我仍然有更大的文件大小在C99标准。也许它与我们正在编译的程序有关。我将用一个简单的“地狱世界”程序来尝试这个方法,并用结果更新你。 – ArunMKumar 2013-05-07 18:04:49

+1

严肃地说,答案是没有差异背后的理由。 – 2013-05-07 18:06:38