VC PlusPlus:C6387'xxxx'は'0'である可能性があります。修正方法

提供:yonewiki
2023年10月15日 (日) 21:29時点におけるYo-net (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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記事に戻る。