VC Intellisense & inactive code blocks on x64
От: Аноним  
Дата: 07.07.08 10:04
Оценка: 12 (1)
Привет.

Проблема в подсветке кода на выбранной платформе x64:
#if defined _M_IX86
#pragma message("x86")
  int x = 12;
  int y;
#elif defined _M_X64
// код неактивен, даже если выбрана конфигурация сборки под x64
#pragma message("x64")
  int x = 13;
  int z;
#else
// неактивен всегда
#pragma message("hz")
  int x;
  int z;
#endif


Получается, _M_IX86 захардкоден в Intellisense? Опытным путём выяснилось, что в х64 обa следующих блока будут активны, но скомпилируется, естесственно, только один:
#ifdef M_IX86
#pragma message("x86")
#endif
#ifdef M_X64
#pragma message("x64")
#endif


Причем, с другими макрообъявлениями в Preprocessor Definitions работает нормально, при переключении конфигурации меняется подсветка. Да ладно бы дело было только в ней — с отключенной соответствующей опцией подсвечивается и неактивный код, но есть ещё intellisense & outlining, отсутствие чего в "неактивном" коде доставляет уже много неудобств. Выходит, что нужно менять эти макрокообъявления на что-то своё и вручную вносить в соответствующие конфигурации проекта, но это неудобно и при использовании альтернативных средств сборки придётся выдумывать связи между новыми и встроенными макроконстантами.

Или есть выход?

ЗЫ проверено на студиях 8 и 9.
vc2005 vc2008 intellisense x64
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.