2013-05-07 37 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