【发布时间】: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 的名称,则此方法有效。
-
干得好。您应该发布您之前的评论作为您自己问题的答案 - 这样以后其他人就可以清楚地知道您解决了这个问题,并且它也可能对其他人有所帮助。