当我定义MACRO
但未在代码中的任何地方使用时,我观察到了上述警告。但在某些情况下,我也收到MACRO
了代码中正在使用的警告。
我已经定义了宏 - INVALIDATION_ADDR 并在某些地方使用。但是,我观察到了相同的 MISRA 警告。我不确定收到此警告的原因。如何避免此警告。
情况1:
未引用“void”类型的全局宏“INVALIDATION_ADDR”[MISRA 2012 规则 2.5,咨询]
皮棉规则 755
未引用全局宏“符号”(位置)——“全局”宏是在头文件中定义的宏。此消息是针对在非库头文件中定义的宏给出的。该宏不用于构成该程序的任何模块中。此消息在单元检出时被抑制(-u 选项)。
typedef uint32 AddressType;
#define INVALIDATION_ADDRESS (AddressType)0x12345678U
void fun1()
{
AddressType Address;
Address = INVALIDATION_ADDRESS;
}
案例二:
未引用“ConditionsEnumType”类型的全局 typedef“ConditionsEnumType”(第 110 行,文件 ITypes.h)[MISRA 2012 规则 2.3,咨询]
皮棉规则 756
未引用全局 typedef 'Symbol' (Location) -- 此消息是针对在非库头文件中声明的 typedef 符号给出的。该符号不用于构成程序的任何模块中。此消息在单元检出时被抑制(-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;
}