如何在C中清除以下PC-Lint警告?

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,如何解决?还是有其他方法可以绕过它,除了将常量变为变量?

oua*_*uah 6

这是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)

请务必在>表达式后面加上注释,否则警告不会消失.