C的哪种方言是Objective-C的“严格超集”?

时间:2010-11-30 19:27:43

标签: objective-c c

我经常听说Objective-C是C编程语言的“严格超集”。 C有几种方言/标准(即K& R,ANSI C,C90,C99,GNU扩展......); Objective-C最初是在20世纪80年代初开发的,所以它必须先于这些标准。然而,Objective-C 2.0是从2006年左右开始的,所以它可以基于更现代的C语言。那么,哪个“C”是Objective-C的超集?

4 个答案:

答案 0 :(得分:7)

对于C的所有标准方言,Objective-C都有相应的“方言”。

答案 1 :(得分:2)

鉴于最常用的Objective-C编译器(GCC和Clang)也是C编译器,可以想象它们支持这些编译器支持的C语言。 Apple的文档明确指出:

  

Apple   编译器基于编译器   GNU编译器集合。   Objective-C语法是一个超集   GNU C / C ++语法和Objective-C   编译器适用于C,C ++和   Objective-C源代码。编译器   通过识别Objective-C源文件   文件扩展名.m,就像它一样   识别仅包含的文件   文件名的标准C语法   扩展名.c。同样,编译器   识别使用的C ++文件   Objective-C由扩展名.mm。   使用Objective-C时的其他问题   “使用C ++”中介绍了C ++   使用Objective-C“

因此,在这种情况下,Objective-C被简单地视为C或C ++编译器的扩展,具体取决于您选择哪种基本语言。

答案 2 :(得分:1)

您正在寻找的内容并未真正定义。 Objective C通常被认为是ANSI-C的严格超集(与C90相同)。但是,Objective C不是标准化语言或类似的任何东西。它的描述基本上是“Take C,并为它添加这些功能”。因此,它取决于您正在使用的特定编译器。

答案 3 :(得分:0)

根据Apple的“Learning Objective-C”:

“Objective-C是C编程语言的ANSI版本的超集,并且支持与C相同的基本语法。”