可以__cplusplus定义并等于零吗?

时间:2017-09-12 03:12:21

标签: c++

问题是,是否应该使用extern "C"#if包裹#ifdef。即:

#if __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
extern "C" {
#endif

这引出了一个问题:是否存在将__cplusplus定义为等于零的情况?

1 个答案:

答案 0 :(得分:3)

根据标准,__cplusplus必须定义,确切的定义取决于所使用的C ++标准,但它不会为零。

例如,对于C ++ 11,它必须201103L,并注明“此标准的未来版本将以更大的值替换此宏的值值“。

从历史上看,在一些古老的不合格编译器中你可能会挖掘,__cplusplus定义为0表示不符合标准。这只是历史感兴趣。

请参阅:How are the __cplusplus directive defined in various compilers?