extern "C"什麼意思


緣由用途

 主要用於c++與其他語言的混合編程,C語言不支持函數重載,編譯之後的函數名依然是原函數名。在c++中,支持了函數重載,重載之後的函數名 爲 原函數名+參數名。比如函數 bool max(int a, int b),編譯之後,c中爲 max,  而c++中函數名變成了  max_int_int。



c++

使用

c++頭文件中調用c語言代碼

c語言不支持 extern "C", 要讓其他語言按c格式編譯,必須在c++頭文件中調用c語言,使用extern "c"申明。

extern “C” 告訴 編譯器, 按C語言的格式編譯和鏈接

// a.h
#ifndef A_H
#define A_H
extern "C" int max(int a, int b);
#endif

以上代碼, A模塊調用其他模塊的max函數, 如果不使用extern "C"申明, 會按C++語法編譯, 編譯後調用函數名爲max_int_int,而實際需要調用名爲max,此時連接器會找不到要調用的函數模塊而報錯。

c語言引用c++頭文件


發佈了72 篇原創文章 · 獲贊 108 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章