c++ - 使用新标准

标签 c++ c c99 c11 c89

我之前被告知(无论正确或错误)我应该使用各种旧的 C 和 C++ 标准。例如,在我今年使用 C 语言编写的 Uni 模块中,我们必须使用 ANSI C(我认为是 C89?)。其他时候我被告知要使用 C99。 每次我被告知其中任何一个时,给出的原因是 C11 使用起来不安全,因为新功能可能不是每个编译器都支持等(我不是这方面的资深专家,所以解释是太棒了)。

一个标准在发布三年后仍未得到广泛使用,这对我来说似乎很可笑。这些人是错的还是使用 C11 和 C++11 确实是一个坏主意?

最佳答案

两者都不是……遗留的祸根。

您应该使用您平台上可用的最新工具,并且这些工具与系统中的其他元素兼容。新工具允许“更好”的编程、更安全的程序、更简洁的程序等等。

是的你应该使用旧的工具,嗯,很简单,很多工作都是维护。其中一些将在非常旧的系统上...熟悉工具的问题将在需要进行更改时有所帮助。

您的目标受众(人员和系统)将决定使用哪些工具以及支持哪些工具。最低公分母几乎总是获胜。

出于同样的原因,我认为这是向后兼容的主要动机。如果新工具不破坏旧代码,那么前进的进程就会变得容易。

一般来说,将新的语言功能与新的编译器结合使用是个好主意。业界普遍采取行动支持更新的语言(甚至在标准最终确定之前,例如 clang 和 gcc 以及即将推出的 C++14)。

关于c++ - 使用新标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953166/

相关文章:

c - 如何导出 C 表达式 "4 - 2 - 1"?

c - void *array = *(void **) member + siz * (*p_n); 的目的是什么?

c++ - 演示代码抛出 out_of_range 异常,但我不知道为什么

c++ - Concat 用于预定义的宏

c++ - ConvertSidToStringSid on 从另一台机器获得的 SID

c - 我如何避免在这里使用 goto 语句?

c - PortAudio - 在单声道中工作,在立体声中出现故障?

c++ - 仅使用递归来提取c++中 vector 中的最大元素

c - 使用 mdbg 调试带有 Windows SDK 7.1 的简​​单 C 代码

c - 如何解决此转换为不同大小警告的指针?