在安全关键系统中测试C++ 17

Hhu*_*hut 13 c++ safety-critical

我目前正在考虑安全关键软件(DO-178C DAL-D)中的C++和编码标准的定义.我正在看MISRA C++,它已经10年了,并且错过了所有C++ 11 ... 17的功能.

虽然保守的安全性通常并不是一个坏主意,但新的语言功能可能有利于安全.

在评论期间,人们必须争论为什么做出某些决定.人们总是可以争辩说,新的语言特征使代码更清晰......从而减少了有关误解的错误; 特别是如果编译器能够测试和验证您的假设.

但很难找到比"让事情变得更清晰"更突出的安全方面的语言特征.现代C++的哪些方面真正有助于安全?

我正在建立一个小练习项目来测试这些想法,目前完全专注于"让编译器检查你的假设".例如,我们刚开始使用[[nodiscard]]并在第一个小时内以这种方式发现至少两个错误.但是现代c ++的哪些方面被设计并且应该考虑到安全性?

Oli*_*ohn 10

我首先想到了这些:

  • atomicmemory_model :它们允许在并发/无锁的上下文中编写可移植代码.
  • unique_ptr:有助于简化内存处理
  • override允许您在编译时找到错误.
  • constexpr如果使代码编写更接近它被使用,这有助于编写更少的错误(有时,专门根据模板参数的行为,你会写一个类n专业.现在你可以使用if constexprn树枝代替).

在某种程度上,考虑到代码清晰度和可移植性的好处,我认为C++ 11/14/17的每个功能都有帮助.