问题描述
MISRA c ++:2008于2008年发布。它是为C ++ 03编写的。
这是仅指C ++ 2003标准的语法还是必须使用编译器。
我们已在VS2017中编写了代码库,并且仅适用于语言标准:
- ISO C ++ 14标准
- ISO C ++ 17标准
- ISO C ++最新草案标准
VS2017没有ISO C ++ 03。
解决方法
很难说甚至在C ++ 03模式下都不编译时就符合MISRA-C ++。 MISRA-C ++是C ++ 03的安全子集,因此它禁止该标准中的许多内容。如果您运行并针对C ++ 11或更高版本进行编译,则所有选择都将关闭。
Visual Studio不适合MISRA设计用于的关键任务应用程序。 C ++ 11或更高版本也不是。即使从理论上讲可以编写安全的C ++程序,但如果您对编译器生成的机器代码有很多了解,我还是会完全避免使用C ++。
,从我在他们的网站上可以看到,MISRA标准不是公开的,因此,普通人实际上无法回答这个问题。这可能主要是您可以使用并满足MIRSA要求的标准C ++库(如果有)的问题。
我怀疑鉴于大多数标准C ++库是在假定C ++异常处理的情况下编写的,因此在关键系统中通常不认为这是安全的,因此您不应该在此应用程序中使用大量标准C ++库。再次,这只是一个猜测。
Visual C ++不声明符合MISRA,而VS 2017是“ C ++ 14”编译器。对于较旧的C ++标准,它没有正式的合规模式。