我正在使用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中评估/检查表达式?
答案 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