extern 'c'

 一. 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
相關文章
相關標籤/搜索