【问题标题】:Can we build in Visual Studio 2017 C++ and still be MISRA C++ compliant?我们可以在 Visual Studio 2017 C++ 中构建并且仍然符合 MISRA C++ 吗?
【发布时间】:2020-08-14 19:58:29
【问题描述】:

MISRA c++:2008 于 2008 年发布。它是为 C++03 编写的。
这只是指 C++2003 标准的语法还是必须使用编译器。

我们已经在 VS2017 中编写了我们的代码库,并且我们仅适用于语言标准:

  • ISO C++14 标准
  • ISO C++17 标准
  • ISO C++ 最新标准草案

VS2017 没有 ISO C++03。

【问题讨论】:

  • 他们必须完全重写他们的前端才能与 C++11 兼容。未考虑使其与 C++03 兼容。将工具更新到 MISRA C++ 2019 是有意义的,信任现有工具来抱怨它不理解的语法是有意义的,降级到 VS2010 是有意义的。

标签: visual-studio-2017 c++03 misra


【解决方案1】:

即使没有在 C++03 模式下编译,也很难说你是 MISRA-C++ 兼容的。 MISRA-C++ 是 C++03 的一个安全子集,因此它禁止该标准中的许多内容。如果你跑掉并为 C++11 或更高版本编译,所有的赌注都没有了。

Visual Studio 不适合 MISRA 所设计的任务关键型应用程序。 C++11 或更高版本也不是。对于此类应用程序,我会完全避免使用 C++,即使理论上可以编写安全的 C++ 程序,但前提是您对编译器生成的机器代码有很多了解。

【讨论】:

    【解决方案2】:

    据我在他们的网站上看到的,MISRA 标准是不公开的,所以一般人真的没有办法回答这个问题。这可能主要是您可以使用哪些标准 C++ 库(如果有的话)并满足 MIRSA 要求的问题。

    我怀疑,鉴于绝大多数标准 C++ 库都是在假设 C++ 异常处理的情况下编写的,这在关键系统中通常被认为是不安全的,因此您不应该将大部分标准 C++ 库用于此应用程序。同样,这只是一个猜测。

    Visual C++ 不声明符合 MISRA,VS 2017 是“C++14”编译器。它没有针对旧 C++ 标准的正式合规模式。

    【讨论】:

    • “从我在他们的网站上看到的,MISRA 标准是不公开的,所以一般人真的没有办法回答这个问题”因此 MISRA 标签。如果您不知道答案,请不要回答。编译器通常不会声称符合 MISRA,afaik 只有 IAR 尝试将 MISRA 检查器与编译器集成。
    • ISO C++ 标准也不是“公开的”,需要花费 198 瑞士法郎。 MISRA C++ 花费你 10 英镑...
    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多