禁用所有结构成员的Lint Info 768

时间:2013-05-22 15:58:39

标签: c pc-lint

我不知道这是否是提出问题的正确位置,但无论如何我都会这样做。

我遇到了Lint的问题,我目前正在从另一个项目中迁移一些代码,并且有许多结构成员当前未在新项目中使用。当然因为这个Lint抱怨:

Info 768:未引用全局结构成员'foo'(第89行,文件/path/header.h)

我想暂时压制这些消息(因为它们打破了我们的构建),但我不想全局地执行它,因为与迁移并行,有代码正在实现,我们想要防止结构成员不被使用。所以我可以选择使用全局配置文件来抑制这些成员的消息(即-esym(768,foo))。

但是我有这个问题:

typedef struct {
  u16 foo;
  u16 bar;
} t_foobar;

typedef struct {
  u16 foo;
  u16 bar;
  u16 temp;
} t_tempfoobar;
目前没有使用foobar :: foo和foobar :: bar所以我想为整个t_foobar结构做一个lint异常,但是如果我使用-esym(foo)我也会为t_tempfoobar :: foo做一个异常这是我不想要的。我试过-esym(768,t_foobar *)并且它没有用。我也不能做内联异常,如:

// lint -e768
typedef struct {
  u16 foo;
  u16 bar;
} t_foobar;
//lint -restore

它不起作用。唯一可行的方法是,如果我在Lint的配置文件中执行-e768。

你对如何做到这一点有什么建议吗?无需为每个成员写一个例外?这也有一个问题,即同名的其他结构的成员也被排除在外。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

参考Gimpel FAQs

消息抑制中的一些常见错误是:

  1. 您在源代码中使用了lint注释,但它们没有任何效果。确保包含“lint”一词,前面没有空格。

    //lint -e620          - OK 
    //-e620          - won't work
    //  lint -e620    - won't work
    
  2. 问题中的代码段显示了行前的“空格”,这似乎是一个问题。