Добрый день.
Есть BCB60 и MSVC2003. И есть такой код:
#if (sizeof(wchar_t)==2) //здесь ругается MSVC2003
const wchar_t array[]={
0x5555L,0xaaaaL,0x00ffL,0xFFFFL,0xFFFFL,0xFFFFL
};
#endif
#if (sizeof(wchar_t)==4)
const wchar_t array[]={
0x55555555L,0xaaaaaaaaL,0x0000FFFFL,0xFFFFFFFFL,0xFFFFFFFFL,0xFFFFFFFFL
};
#endif
Этот код отлично транслируется и работает на BCB60. А MSVC2003 ругается:
fatal error C1017: invalid integer constant expression.
Пробовал флаг /Zc:wchar_t — не помогает.
Вопросы:
1. Почему MSVC2003 ругается?
2. Если такая конструкция для MSVC не допустима по высшим соображениям, то как сделать, чтобы на этапе трансляции MSVC можно было проанализировать размер типов.
Спасибо