extern "C" {
int var = 1;
int func();
}
c语言中并没有extern "C"的语法,这是专门用在c++文件中的,用来兼容c,{}内的内容被视为c语言代码处理
之所以需要这样,是因为,在链接库、文件等等的过程中,我们是依靠符号来定位的,而c++和c语言对 符号的修饰 并不一致,这就导致了,如果c++要调用c库的某些函数(并且不使用extern "C"),那么c++对符号的修饰与c库本身对符号的修饰不同,简单来说就是对不上号,自然也就无法正确链接了
所以在某些系统头文件中,我们会使用 __cplustplus 宏去判断当前文件是c++还是c,配合上条件编译就没有问题了 (c++编译器在编译c++时会默认定义这个宏)
写法如下:
#ifdef __cplusplus
extern "C" {
#endif
void memset(void *, int, size_t);
#ifdef __cplusplus
}
#endif
posted on
浙公网安备 33010602011771号