Re: long l = (long)(pMyObject); warning C4312 ???
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 21.05.04 04:47
Оценка: 49 (3) +1
Здравствуйте, Чили, Вы писали:

Ч>У меня следующий код:

Ч>CMyObject *pObject;
Ч>...
Ч>long l = (long)pObject;
Ч>Здесь: warning C4312, conversion from 'long' to 'CMyObject *' of greater size
Ч>В Visual Studio 6.0 было без проблем, а в VS.NET — warnig !
Ч>Помогите избавится ! (Мне кажется что то в настройках, но найти не могу)

Начиная с 7-ой студии M$ начали приучать программистов к грядущему приходу Win64, где размер указателей будет не 32 разряда (4 байта), а 64. Поэтому указатель уже не будет помещаться в переменную типа long. Приучают они очень просто — уже сейчас при попытке присвоить указатель в переменную типа long вылетает предупреждение. Эта фича, именуемая "Detect 64-bit Portability Issues", по-умолчанию включена ключом компилятора /Wp64. Если раздражает, можно выключить, но настоятельно не рекомендую — пусть раздражает, по крайней мере будете знать из-за чего ваша программа рухнет на Longhorn`е
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.