1

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

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

我的问题是:

  1. 如何设置单个头文件编译为 C++?(我在Identity and Type中将File Type设置为“C++ Header” ,但没有看到任何效果。)。

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

4

2 回答 2

1

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

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

于 2013-09-11T06:30:53.763 回答
0

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

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

于 2013-09-11T06:24:29.933 回答