0

Parasoft C++ Test というコード品質ツールを使用しています。次のことを訴えています。

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

それは述べています:

「setsockopt」関数呼び出しで、int 式にキャストされた long を「5」関数引数として渡さないでください

これを解決するためにいくつかの異なるキャスト オプションを試しましたが、どれも効果がないようです。私は次のことをして、それをなくすことができます:

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

この品質エラーを生成せずに、setsockopt 呼び出しでインラインで sizeof(int) を呼び出す方法はありますか?

4

2 に答える 2

1

にキャストsocklen_t?のようなもの:static_cast<socklen_t>(sizeof(int))、またはあなたはそれを無視することができます...

于 2011-12-15T12:45:38.273 に答える
0

一般に、答えはこの警告を無視することです。これは明らかに偽物です。さらに、システム ヘッダー ファイルに対して生成された警告を修正するために時間を費やさなければならないという事実は、何かがおかしいことを示しています。

sizeof() を socklen_t にキャストしてみるかもしれませんが、すでに持っていると思います。もう 1 つの明らかな方法は、int 型の式を作成することです。おそらく次のようなものです:

sizeof( int ) & 0xFF.

(もちろん、整数が 2^255 ビット幅を超えるシステムでは、これは失敗する可能性があります... :)

于 2011-12-15T12:48:31.617 に答える