Привет.
Проблема в подсветке кода на выбранной платформе 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.