使用新标准

Using new standards

本文关键字:标准 新标准      更新时间:2023-10-16

以前有人告诉我(对或错)我应该使用各种旧的C和c++标准。例如,在我今年在C上做的一个Uni模块中,我们必须使用ANSI C(我相信是C89?)。其他时候,我被告知使用C99。每次我被告知这些,给出的原因是C11是不安全的使用,由于新特性可能不支持每个编译器等(我不是一个巨大的专家在这方面,所以解释会很好)。

在我看来,一个标准在发布3年后仍然没有被广泛使用,这似乎很荒谬。是这些人错了,还是使用C11和c++ 11真的是一个坏主意?

都不是,都是…遗产的祸根。

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

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

您的目标受众(人和系统)将决定使用什么工具和支持什么工具。最小公分母几乎总是获胜。

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

一般来说,在新的编译器中使用较新的语言特性是一个好主意。业界普遍倾向于支持更新的语言(甚至在标准最终确定之前,例如clang和gcc与即将发布的c++ 14)。

一个主要的C编译器供应商,微软,已经声明他们不打算支持正在发展的C标准;他们提供了一个C90编译器,他们的c++编译器将编译当前c++标准的C子集。

如果你不需要在Windows上编译你的C代码,或者你可以使用非microsoft编译器,那么你应该放心使用C11。

在任何情况下,由于c++ 11的C子集更接近C11而不是C90,因此学习当前的C标准以及与当前c++标准兼容的该标准的子集更有意义。