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

use*_*316 1 c macros lint

我有以下代码:

#define NUMBER_OF_ROOMS

if((unsigned int)(NUMBER_OF_ROOMS - 2) > 20)
{
   // do something here
}
Run Code Online (Sandbox Code Playgroud)

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

unw*_*ind 6

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

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

#if (NUMBER_OF_ROOMS - 2) > 20
// do something here
#endif
Run Code Online (Sandbox Code Playgroud)

我认为演员(unsigned int)阵容是没有意义的,如果这些真的是接近整数精度边界的值,那么Jens Gustedt的评论适用.