Может ли компилятор GCC компилировать код Objective-C и C?

У меня есть исходный код для видеодекодера, который написан на C. Код был успешно скомпилирован и выполнен на терминале MAC (который использует компилятор GCC). Сейчас я пытаюсь создать приложение на Xcode с тем же исходным кодом. Только графический интерфейс для приложения написан в Objective-C.

Когда я пытался выполнить на Xcode (который использует компилятор LLVM), я получаю много ошибок в коде C. Единственный другой вариант компилятора, который предоставляет XCode, это LLVM GCC 4.2. Я скомпилировал с использованием этого и обнаружил, что он не может распознать код, написанный на Objective-C.

Есть ли компилятор, который можно использовать как для Objective-C и C? Можно ли использовать компилятор GCC 4.2 для компиляции кода Objective-C?

Как сказать Xcode для компиляции с использованием компилятора GCC 4.2?

Пожалуйста, помогите. Заранее спасибо!

2 ответа

Решение

И LLVM, и GCC могут использоваться для компиляции кода на C, C++ и Objective-C.

Я предполагаю, что некоторые флаги компилятора установлены неправильно.

Objective-C является строгим надмножеством ANSI C, поэтому любой компилятор, который может компилировать код Objective-C, также может компилировать (ANSI) C-код. Если ваша библиотека не использует стандартный C, то у вас могут возникнуть проблемы.

То же самое верно для Objective-C++, который является строгим надмножеством C++.

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

#ifndef __OBJC__
typedef unsigned char BOOL;
#endif
Другие вопросы по тегам