1
20
有几个原因: 1)GCC的C99支持不是很完整,而其C89支持是。这就是为什么C89(带有GNU扩展)是默认的。因此,如果您是一个绝对坚持使用gcc编程到标准的人,那么选择c89。 2)微软的编译器根本不支持C99。因此,如果您想编写可移植的C代码,C89是一个通用标准。
不,ISO C99也被批准为ANSI标准。“ansi”这个名字只附在C89上是一个不幸的历史事故。也就是说,C89将永远是C89,这只是不是最新的ANSI C标准。
你不能用c89的第二种方式写它(即
事实上,即使启用了GNU扩展,GCC也不喜欢C89中的第二个循环。 |
2
19
C被ANSI标准化为C89。然后,它被ISO标准化为C90;C89和C90之间没有技术差异。 C99是C标准的修订版,由ISO C委员会制定,并由ISO和ANSI标准化。C89和C99都是ANSI标准。一般来说,“ansi c”一词通常指c89;《K&R》第二版。这本书只涉及c89,而不是c99。 为什么选择使用旧版本的C?嗯,至少有两个原因。首先,你可能有一个不支持C99的编译器(例如微软Visual C++只支持C89)。第二,有很多遗留代码使用了C89中不允许使用的代码(您可以在问题中看到更多信息 "C99 backward compatibility" ;这也链接到描述差异的C99基本原理文档)。 对于“奖金问题”,不能在C89的for语句中声明变量;可以在C99中声明变量。在C89中,for语句的第一部分是表达式。 |
3
2
我对C标准没有深入的解释。 但我的默认立场是在有机会的时候使用C99。事实上,它是最新开发的标准是一个原因(我有一种错误的感觉,即“更新就是更好”)。 主要原因是我可以在for循环中声明变量。 C99有效:
C89、ANSI及以上版本:
|
4
0
这个 C99 implementation of gcc 尚未完成,但在日常程序员生活中相当有用。我手头没有参考资料,但是对于GCC来说,有一个声明,他们将在这个实现被认为终止的那天切换到C99(或者仅仅切换到他们的方言GNU99)。 使用或不使用C99特性的问题分为一个语用部分:
以及情感/意识形态部分。对于后来的人来说,除了恐龙原理的应用之外,没有其他的治疗方法。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |