宏__cplusplus

宏__cplusplus有2个作用:
1)用于C/C++混合代码;
2)用于判断C++版本;

C, C++混合代码

编写C/C++混合代码时,头文件常会有如下声明:

#ifdef __cplusplus
extern "C" {
#endif

// C代码

#ifdef __cplusplus
}
#endif

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

C++标准版本

除了编写C/C++混合代码时用到,__cplusplus也常用于判断编译器支持的C++标准,如C++03标准中,__cplusplus值被预定义为199711L,C++11标准中,__cplusplus被预定义为201103L。

例如,程序员如果想要确定代码使用支持C++11编译器进行编译时,可这样检测:

#if __cplusplus < 201103L
    #error "should use C++11 implmentation"
#endif

当不支持代码编译C++11时,会立即报错并终止编译。

原文链接: https://www.cnblogs.com/fortunely/p/16065699.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    宏__cplusplus

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/402692

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月21日 上午11:10
下一篇 2023年4月21日 上午11:10

相关推荐