如何使用预处理器检查Objective-C++项目中是否正在编译cpp文件? 我有一个C++源文件.CPP,它在我的两个项目之间共享,一个使用ObjtoVC++,另一个使用普通C++。我有一部分文件需要在Objto-C++项目和普通C++项目中使用不同的代码,所以我需要检查项目是否使用ObjtoVC++编译。经过一些搜索,我发现可以使用_OBJC___________________________)宏检查文件是否由Objective-C编译器编译,因此我尝试了以下代码: #ifdef __OBJC__ //Objective-C++ specific code here #else //Plain C++ specific code here #endif

如何使用预处理器检查Objective-C++项目中是否正在编译cpp文件? 我有一个C++源文件.CPP,它在我的两个项目之间共享,一个使用ObjtoVC++,另一个使用普通C++。我有一部分文件需要在Objto-C++项目和普通C++项目中使用不同的代码,所以我需要检查项目是否使用ObjtoVC++编译。经过一些搜索,我发现可以使用_OBJC___________________________)宏检查文件是否由Objective-C编译器编译,因此我尝试了以下代码: #ifdef __OBJC__ //Objective-C++ specific code here #else //Plain C++ specific code here #endif,c++,objective-c,macros,c-preprocessor,objective-c++,C++,Objective C,Macros,C Preprocessor,Objective C++,问题是从来没有定义过_OBJC____)宏,甚至在Objective-C++项目中也没有定义过。我还注意到,Objective-C++项目中的.mm文件中定义了_OBJC__;宏,但在.cpp文件中没有定义 在重要的情况下,我用XCODEL编译了IOS的Objul-C++项目,而普通C++项目是一个跨平台的计算机程序,可以使用VisualStudio、XCODER或GCC编译。 我在一个Objto-C++项目或一个普通C++项目中编译My.CPP文件时,如何检查预处理程序? < P>问题是默认情

问题是从来没有定义过_OBJC____)宏,甚至在Objective-C++项目中也没有定义过。我还注意到,Objective-C++项目中的.mm文件中定义了_OBJC__;宏,但在.cpp文件中没有定义

在重要的情况下,我用XCODEL编译了IOS的Objul-C++项目,而普通C++项目是一个跨平台的计算机程序,可以使用VisualStudio、XCODER或GCC编译。


我在一个Objto-C++项目或一个普通C++项目中编译My.CPP文件时,如何检查预处理程序?

< P>问题是默认情况下,XCODE通过扩展而不是项目来确定文件类型,因此它认为CPP文件是一个普通的C++文件,即使它是Objto-C++项目的一部分,因此,它没有在该文件中定义_OBJC____)宏。解决方案是通过右键单击XCox左侧部分的文件列表中的.CPP文件来更改编译模式,点击XOffice文件检查器和XDCORT选择ObjuleC++源右侧的类型下拉而不是默认-C++源:

这将使Xcode认为.cpp文件是一个Objective-C++文件,因此它将定义_OBJC__;宏

因为这是一个每个项目设置,它只对Objy-C++项目有影响,并且不会改变普通C++项目中的任何内容,所以IFDEFF Objcxi将是检查文件编译的项目的一种方式。


感谢您在.

AFAIK中给我提供的想法,XCode根据文件后缀而不是项目类型确定语言。您可以在中更改编译模式。这是每个项目的设置。@Josh Caswell谢谢。在文件类型检查器中,我将默认-C++源转换为Objto-C++源代码,并运行了。