#define宏的标准需要现代C++编译器__cplusplus.
这通常用在C和C++都可以使用的文件中,但实现略有不同.
但是在C(和C++)中,在标识符中使用任何双下划线的行为是未定义的!
因此,如果C编译器看到类似的东西
#ifdef __cplusplus
那么行为是不确定的?
但是在C(和C++)中,在标识符中使用任何双下划线的行为是未定义的!
你搞混了.使用它不是未定义的行为,只是保留了名称.关键是你不能自己定义一些,但使用它们很好.
来自ISO 9899:2011:
7.1.3保留标识符
- 所有以下划线开头的标识符以及大写字母或另一个下划线始终保留用于任何用途.