我们可以在Visual Studio 2017 C ++中构建并且仍然符合MISRA C ++吗?

问题描述

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 ++标准,它没有正式的合规模式。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...