当我为 lint 运行我的代码时,我收到警告说“警告 506:常量 bool 值”对于我使用宏分配变量的行。
#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
}
在此代码中,我在将 TRUE 分配给变量时收到警告。在我将 FALSE 分配给变量的地方看不到警告。
但是当我更改宏 #define TRUE 1
时,警告已修复。我不知道这背后的确切原因。
最佳答案
Lint 正在提示,因为 TRUE
被扩展为 (!FALSE)
,而 (!FALSE)
被扩展为 (!0)
。错误 506 标志:
A Boolean, i.e., a quantity found in a context that requires a Boolean such as an argument to
&&
or||
or anif()
orwhile()
clause or!
, was found to be a constant and hence will evaluate the same way each time.
Lint 提示对常量值 (0
) 的逻辑操作 (!
)。
如果C99's stdbool.h
不可用,读入PC-lint's strong types .
关于c - Lint 警告 506 : prio3: Constant value Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953303/