代码之家  ›  专栏  ›  技术社区  ›  Donald Duck user7392049

如何检查是否正在使用预处理器在Objective-C++项目中编译cpp文件?

  •  4
  • Donald Duck user7392049  · 技术社区  · 7 年前

    __OBJC__ 宏可用于检查文件是否由Objective-C编译器编译,因此我尝试了以下代码:

    #ifdef __OBJC__
        //Objective-C++ specific code here
    #else
        //Plain C++ specific code here
    #endif
    

    问题是 __OBJC公司__ 宏从未定义,甚至在Objective-C++项目中也没有定义。我还注意到 __OBJC公司__

    如果有必要,我正在使用Xcode为iOS编译Objective-C++项目,而普通C++项目是一个跨平台的计算机程序,可以使用Visual Studio、Xcode或GCC进行编译。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Cœur Gustavo Armenta    5 年前

    问题是,默认情况下,Xcode通过扩展名而不是项目来确定文件类型,因此它认为。cpp文件是一个普通的C++文件,即使它是Objective-C++项目的一部分,所以它没有定义 __OBJC__

    enter image description here

    这将使Xcode认为。cpp文件是Objective-C++文件,因此它将定义 宏。

    由于这是一个每个项目的设置,它只对Objective-C++项目有效,不会改变普通C++项目中的任何内容,因此 #ifdef __OBJC__ 将是一种检查正在编译文件的项目的方法。


    Josh Caswell 感谢你在 this comment .