1. 程式人生 > >編譯器gcc與g++的區別

編譯器gcc與g++的區別

        gcc開始時候的名字是GNU c compiler, 就是說設計的初衷是用來編譯C語言的。 後來,不斷的拓展發展成了 gnu compiler collection。如果你用gcc編譯過fortran程式碼的話,就會對後者理解的比較深刻了。g++的設計目標是用來編譯C++程式程式碼的,如期名字所暗示的那樣。因此,g++是一個c++ compiler,gcc是 compiler collection。所以,可以推知g++的功能只是gcc的一個子集。

        gcc可以用來編譯.cpp為字尾的c++程式原始檔,同樣g++也可以。你可能以為使用gcc編譯的時候,會呼叫g++。然而,並非如此!!!g++誕生的比gcc晚,剛誕生的g++事實上是用指令碼語言寫的,其中將一系列的命令列引數傳給了gcc,所以應該說g++的內部呼叫了gcc。舊版本的g++的實現指令碼是用bash寫的,雖然現在的g++使用二進位制可執行檔案寫的,但是內部原理還是一樣的。

        gcc和g++的具體區別有以下幾點:

       (1)對於.cpp為字尾的C++檔案,使用gcc編譯或者g++編譯效果差不多一樣的,但是連線的時候不同,g++會在連結的時候自動使用libstdc++,而gcc不會。

       (2)對於.c為字尾的原始檔,gcc預設使用c編譯器去編譯,而g++預設呼叫的是c++的編譯器。

       (3)使用gcc和g++在編譯.cpp檔案時都會額外定義一些巨集,這些巨集在使用gcc編譯.c檔案時沒有的,這些巨集包括:

#define __GXX_WEAK__ 1  
#define __cplusplus 1 
#define __DEPRECATED 1 
#define __GNUG__ 4 
#define __EXCEPTIONS 1 
#define __private_extern__ extern 
學習資料參考於:

http://hipercomer.blog.51cto.com/4415661/846923