extern
-
"extern"关键字
- 由于C语言编译器和C++编译器生成符号的规则是不同的,C编译器生成函数符号是根据函数名而来,而C++编译器生成符号是根据函数名和参数列表而来的,不过C++编译器也能生成C语言的符号,只要把代码在extern "C"下面就可以了 C++调用C的函数时:
-
一定要加上extern “C”,如果不加,链接时编译器找的就是C++的sum符号,根本找不到C语言生成的符号sum,链接就失败了!因此一定要加上,表示告诉编译器这个函数是用C实现的,因此你去找C规则的sum符号吧,这时编译器就可以找到了。
eg:
C调用C++的函数时:
-
要用extern "C"把C++中的函数括起来,以便告诉编译器到时候用C的规则进行编译。
eg: