首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未引用“void”类型的全局宏“INVALIDATION_ADDR”[MISRA 2012规则2.5,咨询]

未引用“void”类型的全局宏“INVALIDATION_ADDR”[MISRA 2012规则2.5,咨询]
EN

Stack Overflow用户
提问于 2019-09-13 05:43:03
回答 1查看 445关注 0票数 1

我在定义MACRO时观察到了上述警告,但在代码中没有使用。但是在某些情况下,我收到了MACRO的警告,这也是在代码中使用的。

我已经定义了宏INVALIDATION_ADDR,并且在一些地方也使用过.然而,我也看到了同样的米斯拉警告。我不知道为什么会收到这样的警告。如何避免此警告。

案例1:

“INVALIDATION_ADDR”类型的全局宏'void‘未引用MISRA 2012,规则2.5,咨询

林特规则755

全局宏“符号”(位置)没有引用--“全局”宏是在头文件中定义的宏。此消息用于非库标头中定义的宏。宏不用于构成程序的任何模块。此消息被禁止用于单元签出(-u选项)。

代码语言:javascript
复制
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选项)。

代码语言:javascript
复制
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; 
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-13 06:28:52

案例1:

这一诊断:

“INVALIDATION_ADDR”类型的全局宏'void‘未引用MISRA 2012,规则2.5,咨询

与此宏不匹配:

#定义INVALIDATION_ADDRESS (AddressType)0x12345678U

因此,我认为MISRA检查是正确的,因为您有另一个未引用的宏定义。

案例2:

实际上,如果您不使用ConditionsEnumType类型定义任何变量,则实际上不会引用该类型的类型。

您可能希望将源更改为:

代码语言:javascript
复制
void fun2()
{
     ConditionsEnumType state;
     state = BLOCK; 
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57917879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档