我对Objective-C比较精通,但我一直在研究一些框架和库,我将来可能会用到,而且我越来越多地看到C的使用。到目前为止,我写的唯一应用程序只包含Objective-C。我知道Objective-C是C的超集,但当我说我只用Objective-C编写时,我的意思是我只使用了Objective-C方法和Objective-C的语法,这与C语法截然不同。我一直在研究与C和Objective-C之间的关系相关的问题(参见下面的链接),我想开始学习C,但显然有三种类型的C (K&R,C89和C99),我想知道我应该学习哪种类型来帮助我使用Objective-C。我知道在学习Objective-C的过程中,我也在不知不觉中学会了C,但我想更多地了解C的细节,熟悉它的函数、语法、特性等。另外,Objective-C是基于这三种C语言中的任何一种吗?
发布于 2012-06-02 08:24:37
甚至还有更多的C类型。同时定义了C0X和C11……它们都只比它们的前辈在进化上迈出了很小的一步,所以你不必太担心。Objective-C是基于C99的(实际上是减去浮点编译指示),所以现在这可能是最合适的。
从你的问题中不能完全清楚,但你确实注意到C的那些变体只是从不同的年份演变而来的规范?大约1978年的K&R,1989年的C89,1999年的C99等等。Objective-C被设计为C的严格超集,因此您可能会期望Objective-C有一天会合并C11特性。
(注意:多次编辑以包括评论中的信息)
发布于 2012-06-02 08:22:57
我建议你看一些关于C语言的入门文章,并学习这些文章教给你的任何C方言。这可能是C89或C99。
K&R C缺少现代功能,如“原型”(声明函数的参数数量和类型)。C89添加了所有这些内容。
C99主要具有在特定领域中有用的小增量功能。您需要学习的大部分内容在C89和C99中应该是相同的。有趣的事实:微软从来没有费心去实现C99。
实际上,我会建议一个特定的介绍性文本:使用K&R的第二版。这基本上将K&R更新到C89。“K&R”是一本优秀的书,也是学习C语言的绝佳选择。
https://stackoverflow.com/questions/1646667/kr-1st-edition-vs-2nd-edition
https://stackoverflow.com/questions/10858820
复制相似问题