2

次のコードについて質問があります。

#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);

マクロ NUM_PEOPLE は NUM_DAYS より大きいまたは NUM_DAYS より小さい値に変更できますが、次の警告が表示されます: Warning 506: Constant value Boolean、どうすれば修正できますか? または、定数を変数に変更する以外に、それを回避する他の方法はありますか?

4

2 に答える 2

6

これは、PC-Lint による無害な警告です。

式は整数定数であり (そのオペランドが可変長配列のsizeof場合を除きますが、これはあなたの場合ではありません)、PC-Lint は次のことを通知します。

sizeof(day) > sizeof(people)

プログラム内のブール定数 (1ここでは値) です。

関係式の直後に次のコメントを追加すると、警告を取り除くことができます。

 size = sizeof(day) > sizeof(people) /*lint -save -e506 */ ? sizeof(day)
        : sizeof(people);

式の直後に必ずコメントを含めてください>。そうしないと、警告が消えません。

于 2013-06-17T18:14:52.933 に答える