C++中extern“C”含义深层探索
介绍
C++语言的本意是“一个更好的C”,但这并不意味着C++中与C语言相似的全局变量和函数的编译和连接方法与C语言完全相同。C++作为一种希望与C兼容的语言,保留了过程化语言的一些特征(世人称之为“不完全面向对象”),所以可以定义不属于任何类的全局变量和函数。但是,C++毕竟是面向对象的编程语言。为了支持函数的重载,C++处理全局函数的方式明显不同于C。
2.从标准头文件开始。
某企业曾给出如下面试问题:
面试问题
为什么标准头文件的结构类似于下面这样?
# ifndef _ _ INCvxWorksh
# define _ _ INCvxWorksh
# ifdef _ _ cplusplus
extern " C " {
# endif
/*...*/
# ifdef _ _ cplusplus
}
# endif
# endif/* _ _ INCvxWorksh */
分析
很明显,在头文件中编译宏“# ifndef _ _ INCVxWorkshop,# define _ _ INCVxWorkshop,#endif”的作用是为了防止头文件被重复引用。
因此
# ifdef _ _ cplusplus
extern " C " {
# endif
# ifdef _ _ cplusplus
}
# endif
的作用是什么?下面我们一起来。
位律师回复
0条评论