现在是2012年。我正在用C写一些代码,我应该继续使用C89吗?还有不支持C99的编译器吗?
我不介意用/* */代替//。
我对C89 forbids mixing declarations and code不太确定。我倾向于认为将所有声明放在一个地方更具可读性,如果不是这样,函数就太长了。
VLA看起来很有用,但我还不需要它们。
如果我没有令人信服的理由,我应该坚持使用C89吗?还有其他我没有考虑到的事情吗?
发布于 2012-08-13 05:26:26
除非您知道不能使用C99兼容的编译器(the Visual Studio C compiler is the most prominent candidate),否则没有充分的理由不使用C99给您的好处。
但是,即使您需要支持该编译器,您也可以使用一些C99特性-只是不是所有特性。
C99的一个非常方便的特性是能够执行for(int i = ...),而不是必须在函数之上声明循环变量-特别是因为C实际上有一个块作用域。在这种声明中,把它放在最上面并不能提高可读性。
发布于 2012-08-13 05:32:25
C89被C99取代有一个(或很多)原因。如果您确定没有C99编译器可用于您的特定工作(除非您坚持使用从未正式支持C的Visual Studio ),那么您需要继续使用C89,但除此之外,您肯定应该将自己置于一个可以从最近几年的20+改进中受益的位置。C99本身并不会变慢。
也许您甚至应该考虑看看最新的C11标准。有一些处理Unicode的重要修复,任何C程序员都可以从中受益(标准中的其他更改绝对是最小的)……
发布于 2012-08-13 05:34:46
好的代码是性能、可伸缩性、可读性和可维护性的混合体。
在我看来,C99使代码更容易阅读和维护。非常非常少的编译器不支持C99,所以我建议使用它。使用可用的工具,除非您确定需要使用需要早期标准的编译器来编译您的项目。
查看以下链接,了解有关C99优势的更多信息:
http://www.kuro5hin.org/?op=displaystory;sid=2001/2/23/194544/139
http://en.wikipedia.org/wiki/C99#Design
请注意,C99还支持snprintf等库函数,这些函数非常有用,并且具有更好的浮点支持。此外,我发现宏非常有帮助,特别是在处理数学密集型应用程序(如加密算法)时。
https://stackoverflow.com/questions/11925998
复制相似问题