Ошибка качества при передаче размера отлитого возврата
Я использую инструмент качества кода под названием 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 бит, это может не сработать...:)