Objective-C est un ensemble de vers l'arrière-compatible avec les extensions de C. Cela est possible parce que l'Objective-C caractéristiques sont séparées en deux façons très simples:
- utiliser le caractère
@
. Ce personnage n'est pas actuellement utilisé dans le langage C.
- une simple extension syntaxique pour l'invocation de méthodes,
[obj method:argument]
. En C, les crochets sont utilisés d'une façon très spécifique pour les indices de tableaux, et c'est donc invalide C syntaxe. Des Extensions de construire sur la syntaxe non valide ne change pas le sens de tout ce qui est valide dans la langue du pays d'accueil.
Donc facile de voir qu'aucun programme qui l'utilise Objective C les extensions peuvent être strictement conformes ISO programme C, n'importe comment simple. En outre, tous les ISO programme C peut être déclaré, par définition, être un Objectif valable C programme. Objective-C peuvent facilement suivre l'évolution comme C99 et C11.
D'autre part, le C++ n'est pas simplement des extensions de C; il est dans une langue différente qui change la signification de certains de la syntaxe de C++ et de C sont maintenus séparément, et ainsi de leur relation change au fil du temps. Par exemple, C a acquis de nouvelles fonctionnalités qui sont totalement absents en C++, et très probablement ne sera pas aller en C++, comme C99 de longueur variable des tableaux. C++ ne peut pas facilement ramasser de nouveaux C caractéristiques.
Si vous écrivez un portable programme C, il doit être à la fois un Objectif C programme.
Mais des soins supplémentaires seront nécessaires afin qu'il soit aussi un programme en C++ avec la même signification. (Cette pratique n'est pas rare, et le dialecte qu'il requiert est officieusement connu comme "Propre C").
Un exemple trivial d'un programme C qui se brise lorsqu'ils sont traités en tant que C++ est tout un programme C qui utilise C++ mot-clé comme un identificateur, tel qu' class
ou virtual
. Objective-C n'introduit pas de mots clés réservés. Il a de nouveaux mots clés qui sont introduites par l' @
caractère, comme @interface
.