Синтаксис Objective C внутри файла .cpp?

Я пытаюсь скопировать пример кода в свой собственный проект. Пример проекта — iPhoneExtAudioFileConvertTest из пакета SDK. Пример проекта содержит файл с именем ExtAudioFileConvert.cpp. Этот файл содержит то, что выглядит как код Objective-C:

assert([NSThread isMainThread]);

Пример проекта работает нормально, но компилятор жалуется на приведенный выше код, когда я создаю свой собственный проект: ошибка: ожидаемое первичное выражение перед токеном '['

Что тут происходит? Очевидно, есть какой-то способ использовать синтаксис объективной скобки c в файле .cpp. Что мне нужно сделать, чтобы заставить его работать?


person morgancodes    schedule 05.09.2010    source источник
comment
Почему бы не сделать файл .mm? Вместо .cpp   -  person    schedule 06.09.2010
comment
Я просто изменил расширение файла .cpp на .mm, и все отлично компилируется. Я предполагаю, что где-то есть настройка проекта, которая позволит мне поместить цель c в файл .cpp.   -  person morgancodes    schedule 06.09.2010
comment
@thyrgle, да, это сработало. Интересно, почему пример проекта скомпилирован, а мой нет.   -  person morgancodes    schedule 06.09.2010


Ответы (2)


Измените расширение файла на .mm для Objective-C++, а не просто на .cpp для C++.

person Community    schedule 05.09.2010
comment
Спасибо, тиргл, но мой вопрос действительно в том, как это сделать с расширением .cpp. - person morgancodes; 06.09.2010
comment
@morgancodes: Не уверен, что это возможно. И если это так.. Я не понимаю, почему это имеет значение. - person ; 06.09.2010
comment
Я пытаюсь импортировать код преобразования аудио в iPhoneExtAudioFileConvertTest в SDK в свой собственный проект. В этом проекте есть файл .cpp с синтаксисом, который я показал выше, так что это определенно возможно. Что касается того, почему это важно, я просто пытаюсь изменить как можно меньше, потому что в коде примера я ДОВОЛЬНО многого не понимаю. Просто пытаюсь деликатно переместить его в одно целое, если это возможно. - person morgancodes; 06.09.2010
comment
@morgancodes: изменение его на .mm никоим образом не повредит вашему пониманию кода. Это просто позволяет вам смешивать C++ и Objective-C. - person ; 06.09.2010
comment
@thyrgle Проект iPhoneExtAudioFileConvertTest взят из справочной документации xCode. - person morgancodes; 06.09.2010
comment
sseyod.blogspot.com/2009/02/objective-c.html показано, как это сделать альтернативно, но на самом деле я бы посоветовал вам использовать .mm. - person ; 06.09.2010
comment
Прохладный. Спасибо за ссылку. Теперь к следующему препятствию! - person morgancodes; 06.09.2010

Настройки сборки iPhoneExtAudioFileConvertTest по умолчанию — Objective-C++.
Если вы измените настройки на В соответствии с типом файла< /strong>, вы получите такое же сообщение об ошибке.

Итак, измените расширение файла на .mm или измените настройки сборки вашего проекта.

CompileSourceAS Objective-C++

person Albert Liao    schedule 27.02.2014