一. 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