Ошибка качества при передаче размера отлитого возврата

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

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

Говорится:

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

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

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

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

2 ответа

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

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

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

sizeof( int ) & 0xFF.

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

Другие вопросы по тегам