我应该坚持哪种C标准?

osh3o9ms  于 2023-08-03  发布在  其他
关注(0)|答案(4)|浏览(84)

在C18、C11、C99和ANSI C中,我(目前)应该坚持哪一个标准,为什么?找出哪些编译器支持哪些标准的最佳方法是什么?对于不同的编程域,这种选择有何不同?

vi4fp9gy

vi4fp9gy1#

在C18、C11、C99和ANSI C中,我(目前)应该坚持哪一个标准,为什么?
一般来说,最新的。使用最新的,除非你有一些反对的意见。
反对使用C18的一个理由是,C18的文档似乎还没有免费提供,但C11是免费的。好吧,自由和自由。至少他们在这里:https://port70.net/~nsz/c/请注意,这些不是最终版本,但对于大多数用途来说,它们已经足够好了。感谢@Lundin和@JohnBode指出这一点。
另一个论点是,可能存在您想要支持的平台,而新的标准不受支持。
我强烈反对ANSI,除非你别无选择。C99版本是一个非常大的改进。在那之后,有一些不错的新功能,但最大的变化是C99。
找出哪些编译器支持哪些标准的最佳方法是什么?
或者在文档中查找您感兴趣的编译器。但是,要注意,一些编译器可能不是100%兼容某个C版本,即使他们声称是。

gorkyyrv

gorkyyrv2#

通常,最新标准一旦发布,就会取代所有其他现有标准。所以,理论上,它是任何时候都可用的最新版本。
然而,并非所有编译器都是最新的,以支持最新的标准修订版-实际的答案是:无论您的环境支持哪一个最新版本,通常都是最好的。

avkwfej4

avkwfej43#

根据我的经验,这往往是组织政策的问题,而不是个人偏好的问题。组织政策的原因通常不是技术性的--它们与支持合同和员工培训等类似的事情联系在一起。
如果你有幸能够完全自己做出选择,你仍然需要考虑一些问题,比如你想要支持的平台范围,以及编译器的最新版本,这些编译器将可供那些可能必须构建你的代码的人使用,而不是你自己。
如果你在这方面完全可以放手,那就认为自己是幸运的;)

rjee0c15

rjee0c154#

你很可能是在要求一个你必须自己做出的决定,而这个决定只会影响你。不过,让我把它放在一个更广泛的背景下。如果你是一个专业人士,那么无论你参与什么项目,都有(或应该有)一个人负责这个决定。我认为很明显,对于一个较大的项目,每个人都使用相同的编译器版本和标准是最重要的;以避免不可预知的差异。
当然,这并不意味着应该跳过对行为的有意测试和比较;但是我假设在一个项目中,如果有人来做编译器/版本/标准的决定,那么也会有一个计划好的活动。
所以,如果有一个人为决定定义:做那个人决定的事。也许可以提出审查他们的决定或参与测试和比较。
如果你可以自由决定(因为你就是那个人,或者因为整个项目就是你),那么首先使用最新的版本(就像其他答案推荐的那样),假设你没有很好的理由相反。
然后,当另一个人变得可用时,有意识地重新决定;我建议倾向于留在一个你开始,如果没有相关的好处,将有从较新的。
这是因为在一个(专业的多人)项目中,如果有一个不可忽略的代码库,决定使用一个更新的编译器(由一个新的标准支持暗示)是有风险的。这至少会使回归测试成为必要。

相关问题