C6225
uyarı C6225: Anlamsal olarak farklı tamsayı türleri arasında örtülü atama: 1 ya da DOĞRU'yu HRESULT için atama.Bunun yerine S_Yanlış kullanmayı düşünün
Bu uyarı HRESULT 'ın 1 değeriyle açık olarak atandığını veya başlatıldığını gösterir.Boolean türü sıfır olmayan bir değeri başarılı gösterir; başarılı (S_OK) içindeki HRESULT 0 değeri ile belirtilir.Bu uyarı sıklıkla Boolean'ın ve HRESULT türlerinin kazara karışıklığına neden olur.Sembolik sabitin başarılı olduğunu göstermek için S_OK kullanılmalıdır.
Örnek
Aşağıdaki kodda, HRESULT ataması bu uyarıya neden olur:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
Bu uyarıyı düzeltmek için aşağıdaki kodu kullanın:
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Bu uyarı için SCODE türü HRESULT ile eşdeğerdir.
Başarısızlığı göstermek için, E_FAIL ya da başka bir sabit kullanılması gerekir.
Daha fazla bilgi için aşağıdaki konulardan birisine bakabilirsiniz: