обработка sizeof на этапе трансляции
От: pepsicoca  
Дата: 13.10.09 08:52
Оценка: :)
Добрый день.

Есть 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 можно было проанализировать размер типов.

Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.