VC PlusPlus:C6387'xxxx'は'0'である可能性があります。修正方法
VC Cpp記事に戻る。
概要
C6387'xxxx'は'0'である可能性があります。という警告が表示されることがあります。
例えば以下のようなコードだと表示されます。
…
if (lpinet->hInternet = InternetOpen(L"myftp01",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0);
if (lpinet->hInternet == NULL) {
MessageBox(hWnd,
L"インターネットを開けません",
L"失敗",
MB_OK);
InternetCloseHandle(lpinet->hInternet);
return FALSE;
}
…
上記だと、NULLならちゃんとエラーにするとしていますが、0でもInternetCloseHandle(lpinet->hInternet)を実行してしまうじゃないかという警告です。成功ならハンドル値に整数の値が格納されるし、失敗なら、NULLという決まりなので、0になることはないですが、もし0のままならInternetCloseHandleを実行してしまうことになるので、よくないということを言っています。つまりあり得ないことを想定して警告していますので、無視しても良さそうですが、礼儀にしたがって書くなら以下のようにする必要があります。
…
if (lpinet->hInternet = InternetOpen(L"myftp01",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0)) {
if (lpinet->hInternet == NULL) {
MessageBox(hWnd,
L"インターネットを開けません",
L"失敗",
MB_OK);
InternetCloseHandle(lpinet->hInternet);
return FALSE;
}
}
…
これで0のときは何もしないという処理になったわけです。こういうあり得ないことまでちくちく警告してくるのが、今のVisualStudioなのです。どうしろといっているのかを知るのはいいことですね。警告を無視しても問題ないし、警告潰しの方法をしっているのはいいことです。むしろ、知っている方がVisualStduioの上をいっているということですし、常に高みを目指すのは大事なことですね。
VC Cpp記事に戻る。