我相对精通 Objective-C,但我一直在研究一些我将来可能会使用的框架和库,并且我越来越多地看到 C 的使用。到目前为止,我编写的唯一应用程序只包含 Objective-C。我知道 Objective-C 是 C 的超集,但是当我说我只用 Objective-C 编写时,我的意思是我只使用了 Objective-C 的方法和与 C 明显不同的 Objective-C 的语法句法。我一直在研究有关 C 和 Objective-C 之间关系的问题(见下面的链接),我想开始学习 C,但显然 C 有三种类型(K&R、C89 和 C99),我是想知道我应该学习哪种类型来帮助我使用 Objective-C。我从学习Objective-C中知道我也在不知不觉中学会了C,
2 回答
我建议你看一些关于 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
C 的类型甚至更多。与此同时,C0X 和 C11 被定义......它们都只是从前辈的小进化步骤,所以你不应该太担心。Objective-C 基于 C99(实际上减去浮点编译指示),所以现在这可能是最合适的。
您的问题并不完全清楚,但是您确实注意到 C 的这些变体只是不同年份的规范演变?K&R 来自 ca。1978 年,1989 年的 C89,1999 年的 C99 等等……Objective-C 被设计为 C 的严格超集,因此您可能期望 Objective-C 有一天会合并 C11 的特性。
(注意:进行了几处编辑以包含评论中的信息)