一. extern的做用c++
1.1. 當它與"C"一塊兒連用時,如: extern "C" void fun(int a, int b);函數
<1>. 則告訴編譯器在編譯fun這個函數名時按着C的規則去翻譯相應的函數名,而不是按照C++的規則spa
<2>. C++的規則在翻譯這個函數名時會把fun這個名字變得面目全非,多是 fun@aBc_int_int#%$,翻譯
也多是別的,這要看編譯器的"脾氣"了(不一樣的編譯器採用的方法不同),爲何這麼作呢,由於C++支持函數的重載啊,在這裏不去過多的論述這個問題code
1.2. 當extern不與"C"在一塊兒修飾變量或函數時,如在頭文件中: extern int g_Int;blog
<1>. 它的做用就是聲明函數或全局變量的做用範圍的關鍵字編譯器
二. extern "C"應用場景編譯
<1>. 以 c 語言的編譯的源文件想使用c++編譯的函數class
<2>. 以 c++ 編譯的動態庫文件,用 c 編譯器編譯的源文件中想使用其動態庫中的函數變量
三. 頭文件中的 extern 'c'
#ifdef __FUNC_H_ #define _FUNC_H_ #ifdef __cplusplus__ extern "C" { #endif 。。。 #ifdef __cplusplus__ } #endif #endif