use*_*316 2 c constants pc-lint
我对以下代码有疑问:
#define NUM_DAYS 60
#define NUM_PEOPLE 30
int days[NUM_DAYS];
int people[NUM_PEOPLE];
int size;
size = sizeof(day) > sizeof(people) ? sizeof(day) : sizeof(people);
Run Code Online (Sandbox Code Playgroud)
虽然可以将宏NUM_PEOPLE更改为大于NUM_DAYS或小于NUM_DAYS,但我收到警告:
Warning 506: Constant value Boolean,如何解决?还是有其他方法可以绕过它,除了将常量变为变量?
这是PC-Lint无害的警告.
甲sizeof表达为整数常数(以及除了当它的操作数是可变长度数组,这是不你的情况)和PC-棉绒只是通知您:
sizeof(day) > sizeof(people)
Run Code Online (Sandbox Code Playgroud)
是程序中的布尔常量(1此处为值).
您可以通过在关系表达式后添加以下注释来消除警告:
size = sizeof(day) > sizeof(people) /*lint -save -e506 */ ? sizeof(day)
: sizeof(people);
Run Code Online (Sandbox Code Playgroud)
请务必在>表达式后面加上注释,否则警告不会消失.