Предупреждение C6215
Приведение между семантически разными целыми типами: логическим типом в HRESULT
Это предупреждение указывает, что логический объект приведение к объекту HRESULT
. Логические типы указывают на успех по значению, отличному от нуля, в то время как успех (S_OK
) HRESULT
указывается значением 0. Приведение логического типа к логическому типу, а затем его использование в тестовом выражении приведет к HRESULT
неправильному результату.
Замечания
Это предупреждение часто возникает, когда логическое значение используется в качестве аргумента SUCCEEDED
или FAILED
макроса, которое явно приводит их аргументы к HRESULT
.
Имя анализа кода: CAST_BOOL_TO_HRESULT
Пример
Следующий код создает это предупреждение:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning C6215
{
// 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
}
}
Дополнительные сведения см. в разделе "Макрос УСПЕШНО" и "СБОЙ"
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по