我的Objective-C项目中有一些C ++文件。为了在头文件中使用STL,我将项目设置设置为在“Build Setting”中将源代码编译为Objective-C ++。
但是现在,我想在我的项目中使用 RegexKitLite 。我发现RegexKitLite在 Objective-C ++ 模式下给出了编译错误,但是在 Objective-C 模式下正确编译,或者在“根据文件类型”中自动确定模式。
我的问题是:
如何设置单个头文件以编译为C ++? (我在标识和类型中将文件类型设置为“C ++标题”,但没有看到效果。)。
如何使用“Objective-C ++”中的RegexKitLite?
答案 0 :(得分:1)
头文件不是编译单元(它们不是自己编译的,只是包含在其他文件中),因此设置类型对编译没有任何影响。
如果包含来自某个C ++编译文件的头文件,它将使用C ++编译器进行编译。 同样,如果您从Objective-C文件中包含完全相同的头文件,它将使用Objective-C编译器进行编译。
答案 1 :(得分:0)
标头不是defaut特有的。 .cpp使用cpp编译器和.mm obj c。 因此,如果您有错误,可能是因为您使用了无法在目标c中编译的c ++(但我认为不可能) 最好猜测你在C ++标题中使用包含obj c声明的标题。
将您的代码分开,仅在cpp文件中包含符合c ++标准的代码