我在定义MACRO时观察到了上述警告,但在代码中没有使用。但是在某些情况下,我收到了MACRO的警告,这也是在代码中使用的。
我已经定义了宏INVALIDATION_ADDR,并且在一些地方也使用过.然而,我也看到了同样的米斯拉警告。我不知道为什么会收到这样的警告。如何避免此警告。
案例1:
“INVALIDATION_ADDR”类型的全局宏'void‘未引用MISRA 2012,规则2.5,咨询
林特规则755
全局宏“符号”(位置)没有引用--“全局”宏是在头文件中定义的宏。此消息用于非库标头中定义的宏。宏不用于构成程序的任何模块。此消息被禁止用于单元签出(-u选项)。
typedef uint32 AddressType;
#define INVALIDATION_ADDRESS (AddressType)0x12345678U
void fun1()
{
AddressType Address;
Address = INVALIDATION_ADDRESS;
}案例2:
“ConditionsEnumType”类型的全局类型(第110行,文件ITypes.h)未引用MISRA 2012,规则2.3,咨询
林特规则756
未引用的全局ty胡枝子f‘符号’(Location) --该消息是为在非库头文件中声明的ty胡枝子符号提供的。该符号不用于包含程序的任何模块中。此消息被禁止用于单元签出(-u选项)。
typedef unsigned char uint8;
typedef uint8 StateType;
typedef enum
{
BLOCK = 0x80U,
HEADER = 0x81U,
DATA = 0x82U,
OUTCOME = 0x84U
} ConditionsEnumType;
/* used in below func */
void fun2()
{
StateType state;
state = (StateType) BLOCK;
}发布于 2019-09-13 06:28:52
案例1:
这一诊断:
“INVALIDATION_ADDR”类型的全局宏'void‘未引用MISRA 2012,规则2.5,咨询
与此宏不匹配:
#定义INVALIDATION_ADDRESS (AddressType)0x12345678U
因此,我认为MISRA检查是正确的,因为您有另一个未引用的宏定义。
案例2:
实际上,如果您不使用ConditionsEnumType类型定义任何变量,则实际上不会引用该类型的类型。
您可能希望将源更改为:
void fun2()
{
ConditionsEnumType state;
state = BLOCK;
}https://stackoverflow.com/questions/57917879
复制相似问题