如何在c中清除这个lint警告?
我有以下代码:
#define NUMBER_OF_ROOMS if((unsigned int)(NUMBER_OF_ROOMS - 2) > 20) { // do something here }
但是我得到了一个lint警告: Warning 506: Constant value Boolean
,这是什么意思以及如何修复它?
这意味着表达式的值是常量,因此if
是无意义的,因为它在编译时已知是否为真。
您当然可以使其更具动态性,或者使用预处理器:
#if (NUMBER_OF_ROOMS - 2) > 20 // do something here #endif
我假设转换为(unsigned int)
是没有意义的,如果这些值实际上是接近整数精度边界的值,那么Jens Gustedt的注释适用。
这意味着if
语句的值在编译时是已知的。
编译器只看到if (30 - 2 > 20)
(加上不需要的强制转换),它不需要在运行时进行评估。