美文网首页
深入理解C++11 2.4 宏__cplusplus

深入理解C++11 2.4 宏__cplusplus

作者: zinclee123 | 来源:发表于2019-08-08 19:03 被阅读0次

在C与C++混合编写的代码中,经常能在头文件看到类似的声明:

#ifdef __cplusplus
extern "C" {
#endif
//一些代码
#ifdef __cplusplus
}
#endif

这种类型的头文件可以被#include到C文件中进行编译,也可以被#include到C++文件中进行编译。extern "C"可以抑制C++对函数名、变量名等符号的进行名称重整(name mangling),因此编译出的C目标文件和C++目标文件中的变量、函数名称等等号都是相同的,链接器可以可靠地对两种类型的目标文件进行链接。

__cplusplus这个宏通常被定义为一个整型值,而且随着标准变化,这个整数会变大,在C++11中,__cplusplus被预定义为201103L,如果想确定代码是使用支持C++11编译期进行编译,可以用如下代码:

#if __cplusplus < 201103L
    #error "should use c++11 implementation"
#endif

相关文章

网友评论

      本文标题:深入理解C++11 2.4 宏__cplusplus

      本文链接:https://www.haomeiwen.com/subject/fojfjctx.html