如何在PC-lint中禁用static_asserts的评估

时间:2015-02-26 15:29:19

标签: c++ static-assert pc-lint

我正在使用C ++的static_assert功能来检查通常应该通过的编译时的事情,例如:

static_assert( SOME_CONSTANT < 1000u, "..." );

在该代码上运行PC-lint(版本9.00k)会发出注释948:&#34;运营商&#39;&lt;&#39;总是评估为True&#34;,这对static_asserts来说毫无意义。

我知道我可以向每个static_assert附加一个//lint !e948(这是我现在要做的)或全局禁用948,但这也会在其他地方隐藏合法错误。

是否有可能告诉PC-lint不在static_asserts中评估/检查表达式?

2 个答案:

答案 0 :(得分:0)

您可以像处理assert()一样教PC-Lint处理static_assert()。只需在代码中添加以下行:

#ifdef _lint
//lint -function(__assert, static_assert)
void static_assert(bool, const char*);
#endif

答案 1 :(得分:0)

我在.lnt配置文件中添加了以下行以解决此问题。

-dstatic_assert()= // ignore keyword static_assert and following parenthetical