【问题标题】:Disable Lint Info 768 for all struct members为所有结构成员禁用 Lint Info 768
【发布时间】:2013-05-22 15:58:39
【问题描述】:

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

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

信息 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。

您对如何完成此任务有任何建议吗?不必为每个成员写一个例外?这也存在其他同名结构的成员也被排除在外的问题。

感谢您的帮助

【问题讨论】:

  • 我已经解决了这个问题,结构需要被命名而不是匿名才能使用通配符。 -esym(768, t_foobar*) 如果结构也具有名称 t_foobar 而不仅仅是 typedef 的名称,则此方法有效。
  • 干得好。您应该发布您之前的评论作为您自己问题的答案 - 这样以后其他人就可以清楚地知道您解决了这个问题,并且它也可能对其他人有所帮助。

标签: c pc-lint


【解决方案1】:

参考Gimpel FAQs

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

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

    //lint -e620          - OK 
    //-e620          - won't work
    //  lint -e620    - won't work
    

问题中的代码 sn-p 在行前显示“空格”,这似乎是一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2021-11-22
    相关资源
    最近更新 更多