Learning C for Objective-C



我相对精通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中的任何一种?

还有更多类型的 C。与此同时,C0X和C11被定义...它们都只比它们的前辈迈出了一小步,所以你不应该太担心。Objective-C基于C99(实际上减去浮点编译指示),所以目前这可能是最合适的。

从你的问题中并不完全清楚,但你确实注意到 C 的这些变体只是不同年份的演变规范?大约1978年的K&R,1989年的C89,1999年的C99等...Objective-C被设计为C的严格超集,所以你可能会期望Objective-C有一天会包含C11功能。

(注意:多次编辑以包含评论中的信息)

我建议你看一些关于C的介绍性文本,并学习文本所教授的任何C方言。 这可能是 C89 或 C99。

K&R C缺少现代功能,例如"原型"(声明函数参数的数量和类型)。 C89 添加了所有这些东西。

C99 主要具有在特定领域有用的小增量功能。 你需要学习的大部分东西在C89和C99中应该是相同的。 有趣的事实:Microsoft从来没有费心去实施C99。

实际上,我会建议一个具体的介绍性文本:使用K&R的第二版。 这基本上将K&R更新为C89。 K&R是一本优秀的书,也是学习C语言的绝佳选择。

https://stackoverflow.com/questions/1646667/kr-1st-edition-vs-2nd-edition