Поделиться через


C6215

Предупреждение C6215: приведение между семантически различными целочисленными типами: логический тип к HRESULT.

Данное предупреждение указывает на приведение логического типа к типу HRESULT. Логические типы указывают успех посредством ненулевого значения, тогда как успех (S_OK) типа HRESULT обозначается значением 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 Macro и FAILED Macro.