如何解决 MISRA C:2012 Rule:8.4?
How to resolve MISRA C:2012 Rule:8.4?
我有一个 C 代码,我正在尝试将其变为 MISRA Compliance.I 在两种不同的情况下出现以下错误:
案例 1]注 9075:外部符号 'buf' 在没有事先声明的情况下定义 [MISRA 2012 规则 8.4,要求] uint32_t buf[BUF_SIZE](在 main.c);
如何以另一种方式定义它,使其遵循 MISRA 规则?
案例 2] 注释 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 Compliance.I 在两种不同的情况下出现以下错误:
案例 1]注 9075:外部符号 'buf' 在没有事先声明的情况下定义 [MISRA 2012 规则 8.4,要求] uint32_t buf[BUF_SIZE](在 main.c);
如何以另一种方式定义它,使其遵循 MISRA 规则?
案例 2] 注释 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中声明它。