如何在c中清除这个lint警告?

时间:2013-06-14 13:53:30

标签: c macros lint

我有以下代码:

#define NUMBER_OF_ROOMS

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

但是我得到了一个lint警告:Warning 506: Constant value Boolean,这是什么意思以及如何修复它?

2 个答案:

答案 0 :(得分:6)

这意味着表达式的值是常量,因此if是没有意义的,因为它在编译时已知是否为真。

您当然可以使其更具动态性,或者使用预处理器:

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

我认为对(unsigned int)的强制转换毫无意义,如果它们的值接近整数精度的边界,则Jens Gustedt的注释适用。

答案 1 :(得分:3)

这意味着if语句的值在编译时是已知的。

编译器只看到if (30 - 2 > 20)(加上不需要的强制转换),它不需要在运行时进行评估。