如何在Xcode中将单个头文件设置为C ++编译器?

时间:2013-09-11 06:21:25

标签: objective-c xcode header-files objective-c++ regexkitlite

我的Objective-C项目中有一些C ++文件。为了在头文件中使用STL,我将项目设置设置为在“Build Setting”中将源代码编译为Objective-C ++。

但是现在,我想在我的项目中使用 RegexKitLite 。我发现RegexKitLite在 Objective-C ++ 模式下给出了编译错误,但是在 Objective-C 模式下正确编译,或者在“根据文件类型”中自动确定模式。

我的问题是:

  1. 如何设置单个头文件以编译为C ++? (我在标识和类型中将文件类型设置为“C ++标题”,但没有看到效果。)。

  2. 如何使用“Objective-C ++”中的RegexKitLite?

2 个答案:

答案 0 :(得分:1)

头文件不是编译单元(它们不是自己编译的,只是包含在其他文件中),因此设置类型对编译没有任何影响。

如果包含来自某个C ++编译文件的头文件,它将使用C ++编译器进行编译。 同样,如果您从Objective-C文件中包含完全相同的头文件,它将使用Objective-C编译器进行编译。

答案 1 :(得分:0)

标头不是defaut特有的。 .cpp使用cpp编译器和.mm obj c。 因此,如果您有错误,可能是因为您使用了无法在目标c中编译的c ++(但我认为不可能) 最好猜测你在C ++标题中使用包含obj c声明的标题。

将您的代码分开,仅在cpp文件中包含符合c ++标准的代码