【发布时间】:2014-07-25 10:05:31
【问题描述】:
之前有人告诉我(正确或错误地)我应该使用各种较旧的 C 和 C++ 标准。例如,在我今年在 C 上做的 Uni 模块中,我们必须使用 ANSI C(我相信是 C89?)。其他时候我被告知要使用 C99。 每次我被告知其中任何一个时,给出的原因是 C11 使用不安全,因为每个编译器可能不支持新功能等。(我不是这方面的专家,所以解释是很棒)。
一个标准在发布 3 年后仍未被广泛使用,这对我来说似乎很荒谬。这些人是错的还是使用 C11 和 C++11 真的是个坏主意?
【问题讨论】:
-
在语言标准的发布和编译器作者/供应商采用它之间可能存在相当长的延迟。话虽如此,C89 要求是可笑的 - C99 可能是目前日常使用的最佳选择。
-
您没有使用标准。您使用编译器。编译器实现了一组标准。例如,如果你四年前购买了编译器,显然它不支持 C++11。你需要知道你的编译器支持的语言标准集(或者通常是它支持的标准的最新版本;或者如果它被部分支持,哪些特性是受支持的,哪些是不支持的)。了解这些信息后,您可以选择是否要使用它。后一部分是基于意见的。