__cplusplus
包含什么并扩展为?__cplusplus
是否始终(即使在最旧的C ++实现中)包含并扩展为 numeric 值?#if __cplusplus
是否安全
或者我们应该使用而不是#ifdef __cplusplus
?答案 0 :(得分:7)
是的,它总是扩展为数值,其含义是正在使用的C ++标准的版本。根据cppreference page,__cplusplus
宏应扩展为:
- 199711L(直到C ++ 11),
- 201103L(C ++ 11),
- 201402L(C ++ 14),
- 201703L(C ++ 17)
#if
和#ifdef
指令之间的区别在于#ifdef
应该用于检查是否已定义给定宏以允许编译一段代码。
另一方面,#if
(#else
,#elif
)指令可用于检查是否满足指定条件(就像典型的if条件一样)。
答案 1 :(得分:2)