如何清洁皮棉C警告?(how to clean this lint warning in c?)

2019-10-18 06:10发布

我有以下代码:

#define NUMBER_OF_ROOMS

if((unsigned int)(NUMBER_OF_ROOMS - 2) > 20)
{
   // do something here
}

但我得到了一个lint警告的: Warning 506: Constant value Boolean ,这是什么意思,如何解决?

Answer 1:

这意味着,表达式的值是恒定的,并且因此if因为它在编译时它是否会是真或不知道是没有意义的。

你当然可以使它更有活力,或者使用预处理器来代替:

#if (NUMBER_OF_ROOMS - 2) > 20
// do something here
#endif

我假设转换到(unsigned int)是没有意义的,如果这些真的是接近的整数精度的界限值,然后延Gustedt的评论也适用。



Answer 2:

这意味着你的价值if声明是在编译时已知的。

编译器只是认为if (30 - 2 > 20)加上一个不需要施法),它并不需要在运行评估。



文章来源: how to clean this lint warning in c?
标签: c macros lint