看下面的一个面试题:为什么标准头文件都有类似的结构
#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编译环境下也可以正常运行,否则的话代码部分就被跳过了。