Ошибка качества при передаче размера отлитого возврата - PullRequest
0 голосов
/ 15 декабря 2011

Я использую инструмент качества кода под названием Parasoft C ++ Test. Жалуется на следующее:

setsockopt(...,sizeof(int));

В нем говорится:

При вызове функции setsockopt не передавайте долго приводимое к выражению int как аргумент функции '5'

Я пробовал несколько разных вариантов приведения, чтобы решить эту проблему, но, похоже, ни один из них не дал никакого эффекта. Я могу сделать следующее и заставить его уйти:

socklen_t socklength = sizeof(int);
setsockopt(...,socklength);

Есть ли способ вызвать sizeof (int) в строке с вызовом setsockopt, не генерируя эту ошибку качества?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

приведение к socklen_t? что-то вроде: static_cast<socklen_t>(sizeof(int)), или вы можете просто проигнорировать это ...

0 голосов
/ 15 декабря 2011

В общем, ответ - игнорировать это предупреждение - оно явно поддельное. Кроме того, тот факт, что вам приходится тратить время, пытаясь исправить предупреждение, генерируемое в системном заголовочном файле, указывает на то, что что-то не так.

Вы можете попробовать привести sizeof () к socklen_t, но я ожидаю, что вы уже это сделали. Другая очевидная вещь состоит в том, чтобы создать выражение типа int. Возможно что-то вроде:

sizeof( int ) & 0xFF.

(Конечно, в системах, где целые числа имеют ширину более 2 ^ 255 битов, это может дать сбой ...:)

...