问题标签 [misra]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1013 浏览

c - MISRA 等同于医疗行业?

就像标题一样,是否有与汽车行业的 MISRA 相同的医疗行业文件、标准或任何一套?

我在 C 领域工作,但任何与语言无关的东西也会很好

0 投票
4 回答
3283 浏览

c++ - 是否有一个 printf 说明符需要浮点数而不是双精度数?

当我将 "%f" 说明符用于snprintftype 的参数时,我收到 MISRA 类型错误float

根据我的研究,MISRA 是正确的,因为 "%f" 需要一种double.

float是否存在将使用类型参数而不是 的浮点说明符或修饰符double

我正在开发嵌入式系统,不想double为了取悦snprintf功能而从 32 位浮点转换为 64 位。代码打印到调试/控制台端口,这是唯一发生转换的地方。

对于那些需要代码示例的人:

我对 SO 和 Web 的所有研究都是关于打印一个浮点值,而不是关于哪些说明符需要一个float参数以便不会double发生任何提升。

我正在为 ARM7TDMI 处理器使用 IAR Embedded Workbench 编译器。

0 投票
1 回答
1605 浏览

c - MISRA C 2004 和 c99

MISRA C 2004 的规则 1.1 指定规范涵盖 c90 而不是 c99。

我想使用 stdint 和 stdbool 库而不是自己编写代码。有没有人在他们的 MISRA 实施中做出这个例外?

0 投票
3 回答
2489 浏览

c - 初始化 char 数组和 MISRA 错误

我有以下行(减少到最低限度的演示问题):

此行生成以下 MISRA 错误:

为什么这是一个错误?

我目前的解决方法是:

这表明该char类型是signed char由我的编译器(IAR EW)实现的。

我的理解是 '\0' 是一个字符文字,因此应该匹配 type char

0 投票
5 回答
15079 浏览

c - 有没有办法在 C90 标准中使枚举无符号?(符合 MISRA-C 2004 标准)

我正在尝试找到一种使枚举“未签名”的方法。

当然,我可以添加一个类型转换来消除错误,这既费时又容易出错。

那么,有没有办法让 MISRA-C 2004 喜欢的特定枚举未签名?

0 投票
1 回答
350 浏览

c++ - 使用不符合 misra 规则的 #define 命令定义数组

我有这个定义:

什么时候

不幸的是,它不符合 MISRA-C++ 规则 8-5-2:

谁能向我解释为什么它不符合要求?我认为#define 命令将定义转换为:

这符合 MISRA 规则。

有没有办法使它符合 MISRA 同时保持#define

0 投票
3 回答
2392 浏览

c++ - MISRA 的文字零而不是空指针常量警告

我有这个功能:

它编译但给了我这个 MISRA 警告:

MISRA-C++ 规则 4-10-2(必需):文字零 (0) 不得用作空指针常量。

现在,如果numShots是一个“真正的”指针,我本可以更改0NULL. 但是numShots是参考,我应该把它当作一个int.

MISRA 想要什么,为什么?

0 投票
1 回答
4003 浏览

c - MISRA04 将 typedef 结构指针转换为 int 指针

我正在为 MSP430F5438A 编写一些固件。我希望这段代码主要是 MISRA04 投诉(我使用的是 C99,而不是 C90)。我正在使用可以检查 MISRA 合规性的 IAR 5.51。

我有以下数据结构:

我想在闪存中创建一个可以全局读取的结构的实例。我已经有单独的方法用于写入闪存。

这是指向该结构的全局指针的定义:

这工作正常,似乎符合 MISRA。

现在,我已经在我的闪存驱动程序中实现了一组函数,这些函数可以写入和读取闪存中的任意段。它们都将 uint8_t 指针作为参数。

我怎样才能调用这样的函数?

这个:

编译和工作正常,但根据 MISRA04 是禁忌......

谢谢,尼克

0 投票
4 回答
4502 浏览

c++ - C++ 内存管理和 Misra

我需要一些关于 C++ 内存管理和MISRA指南的说明。

我必须实现一个与 MISRA 兼容的程序,因此我必须遵守一条重要规则:不能使用“新”运算符(动态内存堆)。

在这种情况下,对于任何自定义对象,我必须使用静态分配:

例如:

我的班级Student有一个构造函数Student(int age)。每当我必须实例化一个学生对象时,我必须这样做:

这将创建一个学生对象 exampleOfStudent。这样我就不必担心我不使用析构函数。这一切都正确吗?还有其他方法可以使用静态内存管理吗?我可以以相同的方式使用 std::vector 或其他数据结构吗?例如,我可以将 Student 实例(我创建为 Student exampleOfStudent(theAge))添加到 std::vector 中吗?

0 投票
2 回答
1140 浏览

c++ - 如何在不违反 MISRA C++ 2008 所需规则 5-2-12 的情况下在 std::map 中插入项目?

我在 PC-Lint (au-misra-cpp.lnt) 中收到此错误:

错误 1960:(注意——违反 MISRA C++ 2008 要求的规则 5-2-12,传递给函数的数组类型需要一个指针)

在此代码上:

_IDs 声明为:

还尝试更改为:

但得到同样的错误。

如何让代码符合 misra?