当我为lint运行我的代码时,我收到的警告说“警告506:常量值布尔值”表示我使用宏指定变量的行。
#define FALSE (0)
#define TRUE (!FALSE)
typedef char BOOL;
BOOL fTriggerCallback;
fun_1()
{
fTriggerCallback = FALSE; //No warning
}
fun_2()
{
if(fTriggerCallback == FALSE)
{
fTriggerCallback =TRUE; //here is the warning
}
}
fun_3()
{
fTriggerCallback =TRUE; //here is the warning
}
在这段代码中,我收到警告,我将其赋值为变量。在我将FALSE赋值给变量的地方看不到警告。
但当我更改宏#define TRUE 1
时,警告已修复。我不知道这背后的确切原因/原因。
答案 0 :(得分:1)
Lint抱怨,因为TRUE
已扩展为(!FALSE)
,已扩展为(!0)
。错误506标志:
布尔值,即在上下文中找到的数量,需要布尔值,例如
&&
或||
的参数或if()
或while()
子句或{ {1}}被发现是一个常数,因此每次都会以相同的方式进行评估。
Lint抱怨常量值(!
)的逻辑运算(!
)。
如果C99's stdbool.h
不可用,请阅读PC-lint's strong types。