共用方式為


C6215

警告 C6215: 語意不相同的整數型別之間發生轉型: 布林型別轉型成 HRESULT

這個警告表示將布林 (Boolean) 轉型 (Cast) 成 HRESULT。布林型別是以不為零的值表示成功,而 HRESULT 中的成功 (S_OK) 是以 0 這個值表示。將布林型別轉型成 HRESULT,接著於測試運算式中使用,將會產生不正確的結果。

將布林當成 SUCCEEDED 或 FAILED 巨集的引數使用時,會經常發生這個警告,而該巨集會將它們的引數明確轉型成 HRESULT。

範例

下列程式碼將產生出這個警告:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

一般而言,SUCCEEDED 或 FAILED 巨集只應套用至 HRESULT。

若要更正這則警告,請使用下列程式碼:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

如需詳細資訊,請參閱 SUCCEEDED 巨集 (英文) 和 FAILED 巨集 (英文)