[英]Are there preprocessor defines to differentiate gcc and g++ code?
是否在gcc和g ++编译器中定义了预处理器宏,以便如果我想将C代码链接到C标准库或C ++标准库? 就像是:
someFile.c
#ifdef __CPP__
#include <c++ library include>
#else
#include <c library include>
我确信有一个快速的谷歌搜索没有立即指出我,我相信有人会发布重复的问题,但无论如何,请指出我正确的方向。
在c ++中你可以
#ifdef __cplusplus
例如,如果c ++代码您希望编译器将某些代码作为c代码处理,则需要将该块放入
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
我不确定是否有特定于GCC的#define
,但C ++标准定义了符号__cplusplus
。 如果存在,那么您使用的是C ++编译器。
在6.10.8预定义宏名称中C11标准说(强调我的)
实现不应预定义宏__cplusplus,也不应在任何标准头中定义它。
我相信C ++要求一致的实现来定义该名称,因此您可以使用它来区分语言
#ifdef __cplusplus
/* c++ code */
#else
/* c code */
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.