extern 'c'
一. extern的作用
1.1. 当它与"C"一起连用时,如: extern "C" void fun(int a, int b);
<1>. 则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名,而不是按照C++的规则
<2>. C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是 fun@aBc_int_int#%$,
也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样),为什么这么做呢,因为C++支持函数的重载啊,在这里不去过多的论述这个问题
1.2. 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int;
<1>. 它的作用就是声明函数或全局变量的作用范围的关键字
二. extern "C"应用场景
<1>. 以 c 语言的编译的源文件想使用c++编译的函数
<2>. 以 c++ 编译的动态库文件,用 c 编译器编译的源文件中想使用其动态库中的函数
三. 头文件中的 extern 'c'
#ifdef __FUNC_H_ #define _FUNC_H_ #ifdef __cplusplus__ extern "C" { #endif 。。。 #ifdef __cplusplus__ } #endif #endif