Keil привел меня в полное недоумение. Он абсолютно не понимает что такое wchar_t. Однако он прекрасно понимает конструкцию L"АБВГ". Поэтому, если wchar_t затайпдефить, то все работает:
Код
typedef unsigned short wchar_t;
wchar_t u[] = L"АБВГ";
int main (void)
{
wchar_t *p = u;
wchar_t c = 0xffff;
while(c != 0)
c = *p++;
}
и в отличие от IAR (привет richie!) генерирует правильные коды букв - 0x0410, 0411, и т.д.
Непонятно как такое может быть? Особенно учитывая, что wchar_t упоминается в хелпе и даже есть ключи, якобы делающие его 16- или 32-битным. У меня эти ключи не работают, может поддержку UNICODE еще как-то надо включать?