标准宏命名约定

Standard macros naming conventions

本文关键字:命名约定 标准      更新时间:2023-10-16

为什么尽管所有其他标准C++宏都以双下划线为前缀和后缀,但__cplusplus却没有效仿?

到处找过我能想到的,但没有成功。

据此,cfront(原始C++编译器(使用c_plusplus而不是__cplusplus

使用c_plusplus的决定似乎是任意的(并且它忽略了"保留标识符"约定,如果当时存在的话(。

我假设后来选择__cplusplus来保留标识符,同时最大限度地减少与原始宏名称相比的差异。.


所有其他标准C++宏都是大写的,并以双下划线为前缀和后缀

正如评论中所指出的,并非所有都是。近年来,提交似乎倾向于使用小写名称(在添加__has_include__cpp_*功能测试宏时(。

这应该与你无关。任何以 __(双下划线(开头的名称都保留用于实现,因此__cplusplus都可以。

此外,假设C++中的所有预定义宏都是大写也是错误的。例如,__unix__是小写的,以及下面列出的一堆其他标准宏:https://en.cppreference.com/w/cpp/preprocessor/replace