如何检查(通过预处理器)C源文件是否正在编译为C ++代码

时间:2010-11-10 21:25:24

标签: c++ gcc c-preprocessor

问题标题应该说明一切,但这里有一个我正在寻找的东西的例子:

#ifndef THE_IDENTIFIER_THAT_WOULD_INDICATE_BEING_COMPILED_AS_CPLUSPLUS

/*
 * Example of something that would matter.
 */
typedef enum _bool bool;
enum _bool { false, true };

#endif

标识符是什么?它严重地困扰着我,因为我知道我之前已经看到过这样做的代码。

顺便说一句,我正在使用GCC。

(我很惊讶我在SO的某个地方找不到副本。如果其他人可以找到一个,请随意重新定向我并将其作为一个骗局关闭。)

6 个答案:

答案 0 :(得分:10)

#ifndef __cplusplus

如果我没记错的话。

答案 1 :(得分:4)

标识符为__cplusplus

#ifdef __cplusplus
#error NO C++ PLEASE
#endif

答案 2 :(得分:2)

#ifdef __cplusplus

有一些非常古老的编译器(早期版本的cfront和几个端口)它是c_pluplus,IIRC。

答案 3 :(得分:2)

#ifdef __cplusplus

答案 4 :(得分:1)

您要查找的标识符是__cplusplus,可以像这样使用:

#ifdef __cplusplus
// Code being compiled as C++.
#endif

答案 5 :(得分:1)

#ifdef __cplusplus

我认为文件扩展名也很重要,如果给C ++编译器一个.c文件,它会将它编译为C代码。我没有什么可以支持的。