1. 程式人生 > >【C/C++】extern 關鍵字與 C/C++ 混合程式設計

【C/C++】extern 關鍵字與 C/C++ 混合程式設計

extern 是一個名字修飾約定。 所謂名字修飾約定,就是指變數名、函式名等經過編譯後重新輸出名稱的規則。

C++支援函式過載,而C不支援,兩者的編譯規則也不一樣。函式被C++編譯後在符號庫中的名字與C語言的不 同。例如,假設某個函式的原型為:void foo( int x, int y ); 該函式被C編譯器編譯後在符號庫中的名字可能為_foo,而C++編譯器則會產生像_foo_int_int之類的名字(不同的編譯器可能生成的名字不 同,但是都採用了相同的機制,生成的新名字稱為“mangled name”)。_foo_int_int這樣的名字包含了函式名、函式引數數量及型別資訊,C++就是靠這種機制來實現函式過載的。extern "C"

表示編譯生成的內部符號名使用C約定。

Ref