【发布时间】:2018-12-13 12:54:09
【问题描述】:
我目前正在考虑安全关键软件 (DO-178C DAL-D) 中的 C++ 和编码标准的定义。我在看 MISRA C++,它又有 10 年的历史了,它错过了所有 C++11…17 的特性。
虽然在安全性方面保持保守通常不是一个坏主意,但新的语言功能可能对安全性有益。
在审查期间,人们必须争论您做出某些决定的原因。人们总是会争辩说,新的语言特性使代码更清晰……因此关于误解的错误更少;特别是如果编译器能够测试和验证您的假设。
但很难找到比“让事情更清晰”更突出安全方面的语言特征。现代 C++ 的哪些方面真正有助于安全?
我正在建立一个小型练习项目来测试这些想法,目前完全专注于“让编译器检查你的假设”。比如我们刚刚开始使用[[nodiscard]],在第一个小时内就发现了至少两个这样的bug。但是现代 c++ 的哪些方面是在设计和使用时应考虑到安全性的?
【问题讨论】:
-
谷歌“AUTOSAR C++”
-
这不是特定于 c++17 的,但保持你的构建链合理地更新将提供额外的安全性。额外的编译器警告和静态分析工具总是越来越好。使这些保持最新只会更容易支持未来的版本。
标签: c++ safety-critical