Я не могу понять это предупреждение.В нем говорится, что я преобразую MY_KEY в HKEY большего размера, но они будут иметь одинаковый размер (32 бита)?
//test.c
//compile as C
//compile with warning level 4
#include <windows.h>
typedef enum MY_KEY
{
//from WinReg.h :
//#define HKEY_CLASSES_ROOT ((HKEY)(ULONG_PTR)((LONG)0x80000000))
//ULONG_PTR cast to avoid 'constant expression is not integral' error
//(caused by HKEY being a HANDLE, and so a void*)
MY_KEY_1 = (ULONG_PTR)HKEY_CLASSES_ROOT,
} MY_KEY;
void Func1(HKEY b)
{
b;
}
void Func2(MY_KEY a)
{
//produces warning C4306:
//'type cast' : conversion from 'MY_KEY' to 'HKEY' of greater size
Func1((HKEY)a);
}
(код C, VS2005, уровень предупреждения 4.)