Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c C的哪一种方言是客观的“C a”;严格超集;属于_Objective C_C - Fatal编程技术网

Objective c C的哪一种方言是客观的“C a”;严格超集;属于

Objective c C的哪一种方言是客观的“C a”;严格超集;属于,objective-c,c,Objective C,C,我经常听说Objective-C是C编程语言的“严格超集”。有几种C语言/标准(即K&R、ANSI C、C90、C99、GNU扩展等);Objective-C最早于20世纪80年代初开发,因此它必须早于这些标准。然而,Objective-C2.0大约来自2006年或2007年,因此它可能基于更现代的C方言。那么,哪个“C”是Objective-C的超集?对于C的所有标准方言,都有一个对应的Objective-C“方言”。您所寻找的并没有真正定义。目标C通常被认为是ANSI-C(与C90相同)的严

我经常听说Objective-C是C编程语言的“严格超集”。有几种C语言/标准(即K&R、ANSI C、C90、C99、GNU扩展等);Objective-C最早于20世纪80年代初开发,因此它必须早于这些标准。然而,Objective-C2.0大约来自2006年或2007年,因此它可能基于更现代的C方言。那么,哪个“C”是Objective-C的超集?

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

您所寻找的并没有真正定义。目标C通常被认为是ANSI-C(与C90相同)的严格超集。然而,Objective C不是一种标准化语言或类似的语言。它的描述基本上是“使用C,并将这些特性添加到C中”。因此,它取决于您使用的特定编译器。

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

苹果 编译器基于编译器 GNU编译器集合的。 Objective-C语法是 GNUC/C++语法和Objective-C 编译器为C,C++和 Objective-C源代码。编译程序 通过以下方式识别Objective-C源文件: 文件扩展名为.m,与 识别仅包含 按文件名列出的标准C语法 扩展.c。类似地,编译器 识别使用的C++文件 目标-C由扩展名决定。mm。 使用Objective-C时的其他问题 用C++编写的“使用C++” “目标-C”

因此,在这种情况下,Obje-C仅仅被视为C或C++编译器的扩展,取决于你选择的基本语言。

< P>根据“来自Apple的:


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

现在我想知道,在编译Objective-C代码时,Xcode如何处理C99严格的别名规则…@iPhone开发者:我从未使用过Xcode,但iirc它基于某种形式的GCC。如果是这样的话,那么它应该支持objective C本身的任何C标准。
@Billy ONeal:
事实上:@iPhone Developer:所有指向对象类型的指针都相当于
id
,但是要从objective-C编译器中进行特殊类型检查。“ANSI C”与C90不同。ANSI C与ISO C保持一致,ISO C目前的版本是C99+TC1/2/3。
@Chuck:
…以及一些非标准的C语言!从Xcode 4.4开始,C方言似乎默认设置为“GNU99”。