我目前正在考虑安全关键软件(DO-178C DAL-D)中的 C++ 和编码标准的定义。我在看 MISRA C++,它又有 10 年的历史了,它错过了所有 C++11…17 的特性。
虽然在安全方面保持保守通常不是一个坏主意,但新的语言功能可能对安全有益。
在审查期间,您必须争论您做出某些决定的原因。人们总是会争辩说,新的语言特性使代码更清晰……因此关于误解的错误更少;特别是如果编译器能够测试和验证您的假设。
但是很难找到比“让事情更清楚”更突出安全方面的语言特征。现代 C++ 的哪些方面真正有助于安全?
我正在建立一个小型练习项目来测试这些想法,目前完全专注于“让编译器检查你的假设”。比如我们刚开始使用[[nodiscard]]
,第一个小时就发现了至少两个这样的bug。但是现代 c++ 的哪些方面是在设计和使用时应考虑到安全性的?