0

warning C4018: '<' : signed/unsigned mismatchこのコードからa を削除できません:

SOCKET s;
fd_set set;
FD_CLR(s,&set);

問題は VS2005 の FD_CLR の実装内にあるように思われますが、実際には大きな問題ではなく、非常に煩わしいだけです。警告を生成しないこのコードの移植可能な同等のバージョンはありますか? (注: 警告をオフにする #pragma があることは知っています。また、FD_CLR マクロが実際に完全に機能することも知っています。警告なしでコードを記述する方法を探しているだけです)。

編集:最終的に、何が起こっているのかを発見しました:サードパーティの .h には、(間違った!!!)「u_int」の「int」としての再定義が含まれています。そのため、コンパイラは FD_CLR 内の u_int の比較に対して不平を言います。私を恥じてください。

4

2 に答える 2

1

警告をグローバルに、または呼び出すたびにローカルで無効にする代わりに、FD_CLR()その特定の警告をローカルで無効にするその呼び出しのラッパーを作成することもできます。

于 2012-11-14T09:36:25.897 に答える
0

マクロ FD_CLR を書き直してループ変数の int/uint を変更できるかもしれませんが、マクロの再定義の警告が発生します。#pragma の方がいいと思います。

于 2012-11-14T08:51:57.410 に答える