extern "c"相关

来源:互联网 发布:大数据可视化解决方案 编辑:程序博客网 时间:2024/05/16 19:50

看下面的一个面试题:为什么标准头文件都有类似的结构

#ifndef __INCvxWorksh 

#define __INCvxWorksh

#ifdef __cplusplus             

extern "C"{

#endif

/*一段代码*/

#ifdef __cplusplus

}

#endif

#endif /*end of __INCvxWorksh*/

分析:

1.蓝色部分:结构 #ifndef ...#define...#endif 是为了防止头文件被重复引用

2.红色部分:

#ifdef __cplusplus:的意思,当前是否为c++编译器,__cplusplus为cpp自己定义的一个宏

extern "C" :表示以下代码按照语言方式进行编译和链接

之所以出现两次 #ifdef __cplusplus,是为了在C编译环境下也可以正常运行,否则的话代码部分就被跳过了。