通过指定返回值的大小时出现质量错误

Quality Error passing sizeof casted return

本文关键字:错误 小时 返回值      更新时间:2023-10-16

我正在使用一个名为Parasoft c++ Test的代码质量工具。它报错如下内容:

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

:

在'setsockopt'函数调用中,不要将长类型转换为int表达式作为'5'函数参数传递

我已经尝试了几种不同的cast选项来解决这个问题,但它们似乎都没有任何效果。我可以做下面的操作,让它消失:

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

是否有一种方法可以调用sizeof(int)内联setsockopt调用而不会产生此质量错误?

转换为socklen_t ?比如:static_cast<socklen_t>(sizeof(int)),或者你可以忽略它…

一般来说,答案是忽略这个警告——它显然是假的。此外,您不得不花费时间试图修复针对系统头文件生成的警告,这表明有些地方出了问题。

您可以尝试将sizeof()转换为socklen_t,但我希望您已经这样做了。另一种比较明显的方法是构造一个int类型的表达式。比如:

sizeof( int ) & 0xFF.

(当然,在整数宽度大于2^255位的系统上,这可能会失败…:)