如何触发__cplusplus(C ++)#ifdef?

时间:2011-07-21 16:43:15

标签: c++ macros

#ifdef __cplusplus
// C++ code
#else
// C code
#endif

结构就是这样。 我的问题是,如何实际触发#ifdef

我的意思是,在节目中?我写的代码可以打开#ifdef吗?

例如,在这种情况下。 就是那个

#define __cplusplus

会打开它吗?

4 个答案:

答案 0 :(得分:19)

  

“#define __cplusplus”

     

会让它开启吗?

是的,它会“让它开启”。

__cplusplus应由C ++编译器自动定义。 C ++使用不同的name mangling和通常用于使C头与C ++兼容的宏:

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif

答案 1 :(得分:15)

只需使用C ++编译器进行编译,然后在这种情况下自动定义__cplusplus

答案 2 :(得分:13)

C ++标准强制执行__cplusplus将始终在C ++程序中定义。 C标准显然没有。这意味着用户需要不费力地启用此机器。

答案 3 :(得分:8)

C ++编译器自动定义它。

由于它以两个连续的下划线开始,因此保留。您允许自己定义它(即尝试这样做会给出未定义的行为)。