【问题标题】:How to check (via the preprocessor) if a C source file is being compiled as C++ code如何检查(通过预处理器)是否将 C 源文件编译为 C++ 代码
【发布时间】:2010-11-10 21:25:23
【问题描述】:

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

#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 的某个地方找不到重复的内容。如果其他人可以找到,请随时重定向我并将其作为欺骗对象关闭。)

【问题讨论】:

标签: c++ gcc c-preprocessor


【解决方案1】:
#ifndef __cplusplus

如果我没记错的话。

【讨论】:

  • 它通常用于头文件保护 #ifdef __cplusplus\n extern "C" { \n#endif
  • +1 你没记错。应该是威廉想要的#ifndef。
【解决方案2】:

标识符是__cplusplus

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

【讨论】:

    【解决方案3】:

    #ifdef __cplusplus

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

    【讨论】:

      【解决方案4】:
      #ifdef __cplusplus
      

      【讨论】:

        【解决方案5】:

        #ifdef __cplusplus

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-24
            • 2020-06-08
            • 2019-05-10
            • 2011-04-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多