我有一个 C 代码,我正在尝试使其符合 MISRA 合规性。我在两种不同的情况下收到以下错误:
案例 1]note 9075:在未事先声明的情况下定义外部符号“buf”[MISRA 2012 规则 8.4,必需] uint32_t buf[BUF_SIZE](在 main.c 中);
我如何以另一种方式定义它,以便它遵循 MISRA 规则?
案例 2] note 9075:在未事先声明的情况下定义外部符号“buf”[MISRA 2012 规则 8.4,必需] uint32_t buf[64U];
case1:
header.h
#define BUF_SIZE 64U
test.c
#include "header.h"
uint32_t buf[BUF_SIZE];
case2:
test.c
uint32_t buf[64U];
最佳答案
How can I define it an another way so it will follow MISRA rule ?
如果该数组要由多个不同文件中的代码访问,则将其声明放入 header.h
中:
extern uint32_t buf[BUF_SIZE];
不要省略extern
。不要省略数组大小,尽管标准 C 允许这样做。保持 .c 文件中已有的定义不被修改。
如果数组仅在声明它的文件中使用,则将其设为静态:
static uint32_t buf[BUF_SIZE];
在这种情况下,请勿在任何 header 中声明它。
关于c - 如何解决 MISRA C :2012 Rule:8. 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118906/