Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как компилируется Objective-C?

Автор вопроса: user3318845Ответов: 3

Мне просто любопытно, компилируется ли Objective-C в код C или среда выполнения Objective-C работает как слой абстракции над программой? Заранее извините, если не знаю о чем говорю!

  • Да. И нет. Может быть. Я никогда не разбирал его на части, но концептуально это препроцессор C в сочетании с огромным количеством поддержки во время выполнения. Я думаю, что на практике они интегрировали некоторые функции в компилятор C. Hot Licks 06.03.2014

cobjective-cruntimecompiler-construction

Ответы

Ответ 1 · рейтинг 9 · Merlevede

Компиляция Objective-C в C не имеет смысла, потому что тогда потребуется разобрать код C и скомпилировать его.

Objective-C компилируется в машинный код. Помните, что язык (Objective-C, C, C++) только определяет правила для правильного написания кода. Компилятор проверяет правильность вашего кода и компилирует его, т. е. переводит в исполняемый код.

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

РЕДАКТИРОВАТЬ:
Среда выполнения реализует основное поведение компьютерного языка. Среда выполнения содержит скомпилированный код функций подобно библиотеке. В C, например, когда вы вызываете printf(), ваш код компилируется в машинный код и связывается с библиотекой, содержащей реализацию этой функции; что делает этот машинный код, так это передает параметры в исполняемый код в библиотеке.

Ответ 2 · рейтинг 15 · uliwitness

Небольшой урок истории:

И C++, и Objective C изначально начинались как препроцессоры для C. Таким образом, вы набирали свой код ObjC, и он эффективно выполнял поиск и замену по коду и переводил команды Objective-C в прямой код C, который использовал немного вспомогательная библиотека (вещи в objc/runtime.h и подобных файлах).

По мере того, как язык становился все более сложным, он был преобразован в полноценный синтаксический анализатор, который заменял/расширял синтаксический анализатор в компиляторе C на один, специфичный для Objective-C. Таким образом, хотя было бы вполне возможно скомпилировать Objective-C в чистый C, современные компиляторы ObjC больше не делают этого.

Ответ 3 · James Harnett

Если говорить строго из Xcode, код компилируется компилятором LLVM. Здесь приведена дополнительная информация о компиляторе LLVM. Вы сможете найти дополнительную информацию о том, как работает компилятор LLVM, в Интернете с помощью простого поиска в Google.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы