強VS2008行GCC警告と同様に"warning:比較署名の符号なし整数値の表現"
-
25-09-2019 - |
質問
と同様を表現しようとした記述 への変換'size_t'から'int'変更にその結果GCC C, かわいを保つために警告を受けて下GCC4.2.1も<日本語仮抄訳>欧州連の下でのVS2008SP1と、32-bitおよび64ビットの編集に対し、無効の警告下GCCに合わせてVS2008.
例えば、GCC4.2.1下に64ビットの条件は、以下の警告として下壁面条件:
#include <string.h>
bool foo()
{
size_t len = 0;
const char * someBuffer = "flubber";
len = strlen(someBuffer);
bool retval = false;
for (int j = 0; j < len; j++) // <-- warning
{
if (someBuffer[j] != '0')
{
retval = true;
break;
}
}
return retval;
}
イ警告:
warning: comparison between signed and unsigned integer expressions
ものではない<日本語仮抄訳>欧州連のVS2008SP1 64bitコンパイラなどのようなpragmasやってみると何かを用い/W3や/W4、w3some_warning_number または/w4some_warning_number, など。
今、ないです、ごめんなさいのダウGCCの警告レベルまたは無効に警告いため、注意が非常に充分な理由があります。うにしていきたいと思いますVSビルド失敗と同様の場合/WXが有効になります。こないといけないと思っている人から、一部の警告がんにVS2008?
編集:この警告が表示された32ビットのビルドで使用しない64ビットを使用し、同じコンパイラオプションを以下に示す。
/O2
/Ob2
/D "WIN32"
/D "_WINDOWS"
/D "NDEBUG"
/D "_CRT_SECURE_NO_WARNINGS"
/D "__WIN32__"
/D "_SCL_SECURE_NO_WARNINGS"
/D "_BIND_TO_CURRENT_MFC_VERSION"
/D "_BIND_TO_CURRENT_CRT_VERSION"
/D "WINVER=0x0502"
/D "_WIN32_WINNT=0x0502"
/D "_WIN32"
/D "_NT"
/D "_CRT_NONSTDC_NO_WARNINGS"
/D "_MBCS"
/FD
/EHsc
/MD
/W3
/WX
/TP
/Zm1000
編#1:見どこれまでのプログラムVisual Studio idiosyncrasy、掲載 Visual C++開発センター-警告C4018:'<':符号付き/符号なしのミスマッチが放出される32ビットは64ビットの作成下VS2008SP1 64bit Windows.
編集#2:に向けた投稿を、Microsoftからの接続の Visual C++開発センターを掲載, は、本日(2011-01-11)マイクロソフトに答えた私の質問や確認してコンパイラ:彼らはこの問題に加え、受注残高を固定は将来のリリース: Microsoft接続の警告C4018:'<':符号付き/符号なしのミスマッチが放出される間のようなサイズの種類.
解決 2
:元の質問のエリアで私のEDIT#2を参照してください。現在では、コンパイラの問題としてMicrosoftによって認識されます。
他のヒント
いった間違っているのは、その行のコードを生み出す構造になっ希望する"警告C4018:'<':符号付き/符号なしのミスマッチ".
ここでの私の試験プロジェクトのコンパイラ設定の場合、これらの慈善団体に寄付してもよいで:
/Od/D WIN32/D"_DEBUG"/D"_CONSOLE"/D"_UNICODE"/D"UNICODE"/Gm/EHsc/RTC1/MDd/湯"stdafx.h"/Fp"デバッグ estproj1.pch"/Fo"デバッグ\"/Fd"デバッグ\vc90.pdb"/W3/nologo/c/ZI/TP/errorReport:速
編集:この試験の32ビットの視覚スタジオが聞こうとしているのですが約64ビットのコンパイルで、この情報は無関係ので、ご容赦.