强制头文件在Xcode中编译为C ++

时间:2015-09-28 16:11:10

标签: c++ ios objective-c c xcode

我在Xcode 7.0中有一个适用于iOS的Xcode项目,它包含Objective-C,C ++和C代码。 Xcode尝试编译扩展名为.h(而不是.hpp)的C ++头文件作为产生错误的C头文件。

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

1 个答案:

答案 0 :(得分:3)

单独的头文件没有编译。它们包含的编译源文件。如果将它们包含在.c中,它们将被编译为C,如果在.m中 - 如Objective-c,如果在.cpp中 - 如C ++,如果在.mm中 - 如Objective-C ++。

将你的名字命名为.h或.hpp。

并不重要

如果你在h文件中有一些C ++代码 - 你应该把它放在

#ifdef __cplusplus
#endif

如果你在h文件中有一部分Objective-C代码,你应该把它放在

#ifdef __OBJC__
#endif

这将使此语句中的代码对其他语言不可见。

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