使用新标准
Using new standards
以前有人告诉我(对或错)我应该使用各种旧的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++标准兼容的该标准的子集更有意义。
- 将标准引入标准::web_view设施有什么好处?
- 如何将标准::字符串内容克隆到新的 char[] 数组
- C 标准是否可以保证使用新的动态分配
- 新标准中对memcpy生命周期初始化规则有哪些更改(如果有的话)
- 是否可以保证C++标准库容器调用可替换的新功能
- 使用从较新的C++标准向后移植的类型和模板扩展命名空间 std
- 标准::make_unique<T> vs 复位(新 T)
- C标准和C++标准之间的关系是什么?
- 与此类结构对齐是否以C 标准为标准
- 使用新标准的C
- 从外部程序中捕获标准和标准输出 C++.
- 如何使用BOOST_LOG_TRIVIAL宏将任何内容记录到标准输出/标准和文件
- 标准::映射 标准::集合包含重复的键
- 放置新标准库字符串的内存泄漏
- 新标准c++11禁止复制构造函数
- 使用新标准
- 标准::移动 - 标准::内部指针
- 在c# GUI项目上重定向标准输出+标准错误
- libstdc++新标准库特性支持表
- 如何从分离的QProcess中读取标准输出/标准错误