强制头文件编译为C++;在Xcode中 < XiCODE 7中包含了Objtovi-C、C++和C代码的XCODE项目。XCODE尝试用扩展名H(不.HPP)编译C++头文件作为产生错误的C头文件。

强制头文件编译为C++;在Xcode中 < XiCODE 7中包含了Objtovi-C、C++和C代码的XCODE项目。XCODE尝试用扩展名H(不.HPP)编译C++头文件作为产生错误的C头文件。,c++,ios,objective-c,c,xcode,C++,Ios,Objective C,C,Xcode,我该如何解决这个问题?应该有一个将哪些文件编译为哪种语言的设置。单独的头文件不编译。包括的已编译源文件。如果将它们包含在.c中,它们将像C一样编译,如果在.m-类Objto-C中,如果在.CPP类的C++中,如果在.mm类Objul-C++中。 不管你怎么称呼它们.h或.hpp 如果你在H文件中有C++代码的一部分,你应该把它放在 #ifdef __cplusplus #endif 如果你在h文件中有部分Objective-C代码,你应该把它放进去 #ifdef __OBJC__ #endif

我该如何解决这个问题?应该有一个将哪些文件编译为哪种语言的设置。

单独的头文件不编译。包括的已编译源文件。如果将它们包含在.c中,它们将像C一样编译,如果在.m-类Objto-C中,如果在.CPP类的C++中,如果在.mm类Objul-C++中。 不管你怎么称呼它们.h或.hpp

如果你在H文件中有C++代码的一部分,你应该把它放在

#ifdef __cplusplus
#endif
如果你在h文件中有部分Objective-C代码,你应该把它放进去

#ifdef __OBJC__
#endif
这将使此语句中的代码对其他语言不可见


您可以在Xcode生成的pch文件中找到此语句。

您可以在“文件检查器”下更改单个文件的类型。将它们更改为
。hpp
也应该可以工作。标头不是单独编译的。解释它们的方式取决于包含它们的位置。@jBot-42更改为
.hpp
后,是否检查了文件检查器。应该说,类型是“默认-C++头”。另外,由于您一直在使用构建设置,您可能希望启动一个新项目,以便所有的构建设置都恢复到默认值。XCode是否具有构建和依赖“预编译头”的功能?如果是这样,试着关掉它。特别是在C源文件和C++源文件中包含相同的头的情况下,这样做。否则,我认为我们已经用尽了我们可以建议的替代方案,而您没有提供可以复制故障的示例代码,以及导致您得出结论认为文件是用错误语言编译的实际错误消息。这并不能回答问题。询问者询问如何强制使用指定语言编译头文件,而不是如何在不同情况下移植代码。