问题标签 [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.
c - MISRA 等同于医疗行业?
就像标题一样,是否有与汽车行业的 MISRA 相同的医疗行业文件、标准或任何一套?
我在 C 领域工作,但任何与语言无关的东西也会很好
c++ - 是否有一个 printf 说明符需要浮点数而不是双精度数?
当我将 "%f" 说明符用于snprintf
type 的参数时,我收到 MISRA 类型错误float
。
根据我的研究,MISRA 是正确的,因为 "%f" 需要一种double
.
float
是否存在将使用类型参数而不是 的浮点说明符或修饰符double
?
我正在开发嵌入式系统,不想double
为了取悦snprintf
功能而从 32 位浮点转换为 64 位。代码打印到调试/控制台端口,这是唯一发生转换的地方。
对于那些需要代码示例的人:
我对 SO 和 Web 的所有研究都是关于打印一个浮点值,而不是关于哪些说明符需要一个float
参数以便不会double
发生任何提升。
我正在为 ARM7TDMI 处理器使用 IAR Embedded Workbench 编译器。
c - MISRA C 2004 和 c99
MISRA C 2004 的规则 1.1 指定规范涵盖 c90 而不是 c99。
我想使用 stdint 和 stdbool 库而不是自己编写代码。有没有人在他们的 MISRA 实施中做出这个例外?
c - 初始化 char 数组和 MISRA 错误
我有以下行(减少到最低限度的演示问题):
此行生成以下 MISRA 错误:
为什么这是一个错误?
我目前的解决方法是:
这表明该char
类型是signed char
由我的编译器(IAR EW)实现的。
我的理解是 '\0' 是一个字符文字,因此应该匹配 type char
。
c - 有没有办法在 C90 标准中使枚举无符号?(符合 MISRA-C 2004 标准)
我正在尝试找到一种使枚举“未签名”的方法。
当然,我可以添加一个类型转换来消除错误,这既费时又容易出错。
那么,有没有办法让 MISRA-C 2004 喜欢的特定枚举未签名?
c++ - 使用不符合 misra 规则的 #define 命令定义数组
我有这个定义:
什么时候
不幸的是,它不符合 MISRA-C++ 规则 8-5-2:
谁能向我解释为什么它不符合要求?我认为#define 命令将定义转换为:
这符合 MISRA 规则。
有没有办法使它符合 MISRA 同时保持#define
?
c++ - MISRA 的文字零而不是空指针常量警告
我有这个功能:
它编译但给了我这个 MISRA 警告:
MISRA-C++ 规则 4-10-2(必需):文字零 (0) 不得用作空指针常量。
现在,如果numShots
是一个“真正的”指针,我本可以更改0
为NULL
. 但是numShots
是参考,我应该把它当作一个int
.
MISRA 想要什么,为什么?
c - MISRA04 将 typedef 结构指针转换为 int 指针
我正在为 MSP430F5438A 编写一些固件。我希望这段代码主要是 MISRA04 投诉(我使用的是 C99,而不是 C90)。我正在使用可以检查 MISRA 合规性的 IAR 5.51。
我有以下数据结构:
我想在闪存中创建一个可以全局读取的结构的实例。我已经有单独的方法用于写入闪存。
这是指向该结构的全局指针的定义:
这工作正常,似乎符合 MISRA。
现在,我已经在我的闪存驱动程序中实现了一组函数,这些函数可以写入和读取闪存中的任意段。它们都将 uint8_t 指针作为参数。
我怎样才能调用这样的函数?
这个:
编译和工作正常,但根据 MISRA04 是禁忌......
谢谢,尼克
c++ - C++ 内存管理和 Misra
我需要一些关于 C++ 内存管理和MISRA指南的说明。
我必须实现一个与 MISRA 兼容的程序,因此我必须遵守一条重要规则:不能使用“新”运算符(动态内存堆)。
在这种情况下,对于任何自定义对象,我必须使用静态分配:
例如:
我的班级Student
有一个构造函数Student(int age)
。每当我必须实例化一个学生对象时,我必须这样做:
这将创建一个学生对象 exampleOfStudent。这样我就不必担心我不使用析构函数。这一切都正确吗?还有其他方法可以使用静态内存管理吗?我可以以相同的方式使用 std::vector 或其他数据结构吗?例如,我可以将 Student 实例(我创建为 Student exampleOfStudent(theAge))添加到 std::vector 中吗?
c++ - 如何在不违反 MISRA C++ 2008 所需规则 5-2-12 的情况下在 std::map 中插入项目?
我在 PC-Lint (au-misra-cpp.lnt) 中收到此错误:
错误 1960:(注意——违反 MISRA C++ 2008 要求的规则 5-2-12,传递给函数的数组类型需要一个指针)
在此代码上:
_IDs 声明为:
还尝试更改为:
但得到同样的错误。
如何让代码符合 misra?