Как установить один заголовочный файл как компилятор C++ в XCode?

В моем проекте Objective-C есть несколько файлов C++. Чтобы использовать STL в заголовочных файлах, я установил настройку проекта для компиляции исходного кода как Objective-C++ в "Настройке сборки".

Но теперь я хочу использовать RegexKitLite в моем проекте. Я обнаружил, что RegexKitLite выдает ошибку компиляции в режиме Objective-C++, но компилируется правильно в режиме Objective-C или при автоматическом определении в режиме "По типу файла".

Мои вопросы:

  1. Как установить один заголовочный файл для компиляции как C++? (Я установил Тип файла как "Заголовок C++" в Идентичности и Типе, но никакого эффекта не видно.).

  2. Как использовать RegexKitLite из "Objective-C++"?

2 ответа

Решение

Заголовочные файлы не являются модулем компиляции (они не компилируются сами по себе, а просто включаются в другие файлы), поэтому установка типа не влияет на компиляцию.

Если вы включите заголовок из какого-то C++-компилированного файла, он будет скомпилирован с помощью компилятора C++. Точно так же, если вы включите точно такой же заголовочный файл из файла Objective-C, он будет скомпилирован с помощью компилятора Objective-C.

Заголовки не являются определенными по умолчанию..cpp использует компилятор cpp и.mm obj c. Поэтому, если у вас есть ошибка, это может быть потому, что вы используете C++, который не может быть скомпилирован в цели c (но я не думаю, что это возможно). Лучше предположить, что вы используете заголовок, включающий объявления obj c в заголовке C++.

отделите ваш код, чтобы включать только C++-совместимый код в файлы cpp

Другие вопросы по тегам