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