Compiler Warning (level 3, off) C4165

'HRESULT' is being converted to 'bool'; are you sure this is what you want?

When an HRESULT is used in an if statement, the HRESULT is converted to a bool unless you explicitly test for the variable as an HRESULT.

Warning C4165 is off by default. For more information, see Compiler Warnings That Are Off By Default.

Example

The following sample generates C4165:

// C4165.cpp
// compile with: /W3
#include <windows.h>
#pragma warning(3:4165)

extern HRESULT hr;
int main() {
   if (hr) {
   // try either of the following ...
   // if (FAILED(hr)) { // C4165 expected
   // if (hr != S_OK) {
   }
}