问题是,是否应该使用extern "C"
或#if
包裹#ifdef
。即:
#if __cplusplus
extern "C" {
#endif
或
#ifdef __cplusplus
extern "C" {
#endif
这引出了一个问题:是否存在将__cplusplus定义为等于零的情况?
答案 0 :(得分:3)
根据标准,__cplusplus
宏必须定义,确切的定义取决于所使用的C ++标准,但它不会为零。
例如,对于C ++ 11,它必须为201103L
,并注明“此标准的未来版本将以更大的值替换此宏的值值“。
从历史上看,在一些古老的不合格编译器中你可能会挖掘,__cplusplus
定义为0表示不符合标准。这只是历史感兴趣。
请参阅:How are the __cplusplus directive defined in various compilers?