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

Dav*_*gea 14 c++ macros

#ifdef __cplusplus
// C++ code
#else
// C code
#endif
Run Code Online (Sandbox Code Playgroud)

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

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

例如,在这种情况下.就是它

#define __cplusplus
Run Code Online (Sandbox Code Playgroud)

会打开它吗?

kra*_*mir 19

"#define __cplusplus"

会让它上手吗?

是的,它会"让它开启".

__cplusplus应该由C++编译器自动定义.C++使用不同的名称修改和常用于使C头与C++兼容的宏:

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)


R. *_*des 15

只需使用C++编译器编译它,并__cplusplus在这种情况下自动定义.


Pup*_*ppy 13

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

  • 实际上,C标准强制要求它不被定义.两个委员会之间的合作. (6认同)

Jer*_*fin 8

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

由于它以两个连续的下划线开始,因此保留.你是不是允许自己定义(即试图这样做给未定义行为).