c和 cpp的區別

2021-08-04 11:02:14 字數 786 閱讀 3599

.c和.cpp的大致區別很明顯就能看出來,乙個表示c的源程式,乙個表示c++的源程式,那麼我們今天結合gcc/g++來看一下它們的區別。

**:

[***@localhost test]$ cat test.c 

#includevoid func()

int main()

[***@localhost test]$

結果:

注:.c檔案和.cpp檔案的內容相同

對於.c檔案,gcc編譯後的func的.type為func;而對於.cpp檔案gcc編譯後的func的.type為_z4funcv, 則編譯器會根據檔案字尾名對函式或變數名對某些修正,乙個是c的編譯方式,乙個是c++的編譯方式。

上面是用gcc編譯的,下面我們來用g++試一下:

可以看到g++無論是對.c檔案還是.cpp檔案都是按c++的方式編譯的,這是和gcc是有區別的。gcc會根據檔案字尾名來確定編譯方式,而g++只有c++的編譯方式。

c和 cpp 的 區別

在編譯原始檔時,c編譯器和c 編譯器都會對符號 函式或變數 名作某些修正,但兩者採用的修正方法不同,所以兩者生成的目標檔案不能互相鏈結。在c 中使用extern c 可以讓c 符號獲得c鏈結特性。由於c 編譯器會自動定義 cplusplus巨集,所以在c語言標頭檔案中採用這種結構可以保證無論使用何種...

h 和 cpp的區別

include該hpp檔案即可,無需再將cpp加入到project中進行編譯。而實現 將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫 project中的cpp檔案數與編譯次數,也不用再發布煩人的lib與dll,因此非常適合用來編寫公用的開源庫。hpp的優點不少,但...

h和 cpp檔案的區別

c 2009 11 21 22 10 關於標頭檔案和原始檔的分別 首先,我們可以將所有東西都放在乙個.cpp檔案內.然後編譯器就將這個.cpp編譯成.obj,obj是什麼東西?就是編譯單元了.乙個程式,可以由乙個編譯單元組成,也可以有多個編譯單元組成.如果你不想讓你的源 變得很難閱讀的話,就請使用多...