Pointer truncation VS2003.NET
От: noesis  
Дата: 21.05.04 06:39
Оценка:
Ковырял свои код в
            class cSQLInfo;
            ...
            cSQLInfo *lpSQLInfo = new cSQLInfo(hWnd);
            SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG)lpSQLInfo);
            ...

Ругается: Warning C4311 pointer truncation from 'cSQLInfo *' to 'LONG'
..64 bit truncated to 32 bit..
Понятно, пусть будет так, код исправим если потребность будет
Почему запутался — в VC++6.0 на это не ругается, и это даже хорошо, ибо плавал глюк как раз в этой области — будем разбиратся. Вопрос: Возможно компилятор 6.0 подвинтить, чтоб ругался на такие вещи? Еще вопрос: Почему sizeof(LPSQLINFO)
    typedef LPSQLINFO cSQLInfo *;

говорит, что он равен 4-м байтам == sizeof(LONG)? И почему он тогда ругнулся так, дюже мене запугав?
Как контролировать какие указатели компилятор использует?
И, кстати, может будет полезный совет, как лаконичнее записать 64 bit указатель в упомянутом SetWindowsLongPtr?

Заранее спасибо

ЗЫ: Что то прям куча вопросов...
ЗЗЫ: Или может таки стоит пойти поспать?
... << RSDN@Home 1.1.3 stable >>
icq 323-145-728
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.