De quel dialecte de C Objective-C est-il un «sur-ensemble ssortingct»?

J’entends souvent dire qu’Objective-C est un “sur-ensemble ssortingct” du langage de programmation C. Il existe plusieurs dialectes / standards de C (par exemple, extensions K & R, ANSI C, C90, C99, GNU, etc.); Objective-C a été développé pour la première fois au début des années 80. Il doit donc précéder ces normes. Cependant, Objective-C 2.0 date d’environ 2006 ou 2007 et pourrait donc être basé sur un dialecte C plus moderne. Alors, de quel “C” Objective-C est-il un sur-ensemble?

Il existe un “dialecte” correspondant à Objective-C pour tous les dialectes standard de C.

Étant donné que les compilateurs Objective-C les plus couramment utilisés (GCC et Clang) sont également des compilateurs C, on pourrait imaginer qu’ils prennent en charge le ou les dialectes C pris en charge par ces compilateurs. La documentation d’Apple indique spécifiquement:

Les compilateurs Apple sont basés sur les compilateurs de la collection de compilateurs GNU. La syntaxe Objective-C est un sur-ensemble de la syntaxe GNU C / C ++, et le compilateur Objective-C fonctionne pour le code source C, C ++ et Objective-C. Le compilateur reconnaît les fichiers source Objective-C par l’extension de nom de fichier .m, tout comme il reconnaît les fichiers contenant uniquement la syntaxe C standard par l’extension de nom de fichier .c. De même, le compilateur reconnaît les fichiers C ++ qui utilisent Objective-C avec l’extension .mm. D’autres problèmes liés à l’utilisation d’Objective-C avec C ++ sont traités dans «Utilisation de C ++ avec Objective-C».

Donc, dans ce cas, Objective-C est simplement considéré comme une extension du compilateur C ou C ++ en fonction du langage de base que vous choisissez.

Ce que vous recherchez n’est pas vraiment défini. On pense généralement que l’objective C est un sur-ensemble ssortingct d’ANSI-C (identique à C90). Cependant, l’objective C n’est pas un langage normalisé ni quoi que ce soit de ce genre. Sa description est fondamentalement “Prenez C, et ajoutez-lui ces fonctionnalités”. Cela dépend donc du compilateur que vous utilisez.

Selon ” Learning Objective-C ” d’Apple:

“Objective-C est un sur-ensemble de la version ANSI du langage de programmation C et supporte la même syntaxe de base que C”