Objective C ist eine Reihe abwärtskompatibler Erweiterungen für C. Dies ist möglich, da die Objective C-Funktionen auf zwei sehr einfache Arten abgegrenzt sind:
- Verwendung des Charakters
@
. Dieses Zeichen wird derzeit in der Sprache C nicht verwendet.
- eine einfache syntaktische Erweiterung zum Aufrufen von Methoden ,
[obj method:argument]
. In C werden eckige Klammern auf sehr spezielle Weise für die Array-Subskription verwendet. Dies ist also eine ungültige C-Syntax. Erweiterungen, die auf einer ungültigen Syntax aufbauen, ändern nichts an der Bedeutung von Elementen, die in der Hostsprache gültig sind.
So leicht zu erkennen, dass kein Programm, das Objective C-Erweiterungen verwendet, ein streng konformes ISO C-Programm sein kann, egal wie einfach. Darüber hinaus kann jedes ISO C-Programm per Definition als gültiges Objective C-Programm deklariert werden. Ziel C kann Entwicklungen wie C99 und C11 leicht verfolgen.
Andererseits ist C ++ nicht einfach eine Erweiterung von C; Es ist eine andere Sprache, die die Bedeutung einiger Syntax von C ändert. C ++ und C werden separat verwaltet, und daher ändert sich ihre Beziehung im Laufe der Zeit. Zum Beispiel hat C neue Funktionen erworben, die in C ++ vollständig fehlen und wahrscheinlich nicht in C ++ integriert werden, wie z. B. C99-Arrays mit variabler Länge. C ++ kann neue C-Funktionen nicht einfach aufnehmen.
Wenn Sie ein portables C-Programm schreiben, sollte es gleichzeitig ein Objective C-Programm sein. Es ist jedoch zusätzliche Sorgfalt erforderlich, damit es sich auch um ein C ++ - Programm mit derselben Bedeutung handelt. (Diese Praxis ist nicht ungewöhnlich und der erforderliche Dialekt wird informell als "Clean C" bezeichnet.)
Ein triviales Beispiel für ein C-Programm, das bei Behandlung als C ++ unterbrochen wird, ist jedes C-Programm, das ein C ++ - Schlüsselwort als Bezeichner verwendet, z. B. class
oder virtual
. Ziel C führt keine reservierten Schlüsselwörter ein. Es hat neue Schlüsselwörter, die vom @
Charakter eingeführt werden , wie z @interface
.