Какой диалект C является Objective-C "строгим надмножеством"? - PullRequest
8 голосов
/ 30 ноября 2010

Я часто слышу, что Objective-C является "строгим надмножеством" языка программирования C.Существует несколько диалектов / стандартов языка Си (т. Е. K & R, ANSI C, C90, C99, расширения GNU ...);Objective-C был впервые разработан в начале 1980-х годов, поэтому он должен предшествовать этим стандартам.Однако Objective-C 2.0 относится к 2006 или 2007 году, поэтому он может быть основан на более современном диалекте языка C.Итак, какой "C" является Objective-C надмножеством?

Ответы [ 4 ]

7 голосов
/ 30 ноября 2010

Существует соответствующий «диалект» Objective-C для всех стандартных диалектов C.

2 голосов
/ 01 декабря 2010

Учитывая, что наиболее часто используемые компиляторы Objective-C (GCC и Clang) также являются компиляторами C, можно предположить, что они поддерживают диалект (ы) C, поддерживаемые этими компиляторами. Документация Apple специально гласит:

яблоко компиляторы основаны на компиляторах из коллекции компиляторов GNU. Синтаксис Objective-C является надмножеством Синтаксис GNU C / C ++ и Objective-C компилятор работает на C, C ++ и Objective-C исходный код. Компилятор распознает исходные файлы Objective-C по расширение файла .m, так же, как оно распознает файлы, содержащие только стандартный синтаксис C по имени файла расширение .c. Точно так же, компилятор распознает файлы C ++, которые используют Объектив-С по расширению .мм. Другие проблемы при использовании Objective-C с C ++ описаны в разделе «Использование C ++ С Objective-C ”

Таким образом, в этом случае Objective-C просто рассматривается как расширение компилятора C или C ++, в зависимости от того, какой язык вы выберете в качестве базового.

1 голос
/ 30 ноября 2010

То, что вы ищете, на самом деле не определено.Цель C обычно считается строгим надмножеством ANSI-C (которое совпадает с C90).Однако Objective C не является стандартизированным языком или чем-то в этом роде.В основном это описание «Возьми С и добавь в него эти функции».Поэтому он зависит от того, какой компилятор вы используете.

0 голосов
/ 28 ноября 2012

Согласно « Learning Objective-C » от Apple:

«Objective-C является расширенным набором ANSI-версии языка программирования C и поддерживает тот же базовый синтаксис, что и C. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...