Файлы Objective-C++ и .cpp в Xcode

Я пытаюсь сделать простое приложение Objective-C++. Весь мой код компилируется нормально, включая использование C++ в классах Objective-C, пока я не попытаюсь добавить в смесь класс C++. Я создал простой класс C++:

Тест.ч

class Test {

};

и включил этот файл в класс Objective-C (с расширением .mm), и я получаю следующую ошибку сборки:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'

Очевидно, мне не хватает какой-то простой концепции. Я был бы признателен за просветление.


person LandonSchropp    schedule 13.09.2010    source источник


Ответы (4)


ответ helixed не поможет, ваш класс будет просто пропущен препроцессором, если __cplusplus undefined.

Больше всего вы пытаетесь включить класс C++ из файла *.m, попробуйте переименовать его в *.mm. Это решает ту же проблему на моей стороне.

person Pavel    schedule 15.09.2010

Не должна ли команда препроцессора требоваться:

#ifdef __cplusplus
person deceleratedcaviar    schedule 17.01.2011

Что ж, после более тщательного изучения Документация Apple, это похоже на ответ на использование флага препроцессора __cplusplus в заголовочном файле. Вот как код выглядит сейчас:

#ifdef __cplusplus

class Test {

};

#endif
person LandonSchropp    schedule 13.09.2010

В Xcode 6 есть следующая опция:

Apple LLVM 6.0 - Language -> Compile Sources As

Вы можете установить это на Objective-C++, и тогда расширение файла не имеет значения. Это особенно полезно, если вы работаете на разных платформах и вам нужно использовать другие расширения файлов.

person sbsmith    schedule 21.01.2015
comment
Почти пять лет спустя это было очень полезно! Это дало мне знать, какой параметр искать, даже в более поздней версии xCode. Как вы сказали, работая над кросс-платформенным приложением с собственным кодом, я не ожидал, что мне придется переименовывать все мои файлы .cpp в .mm! Большое спасибо! - person Dronz; 25.12.2019