реклама на сайте
подробности

 
 
> UNICODE
777777
сообщение Nov 24 2010, 07:14
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Написал простейшую строку:

wchar_t u[] = L"АБВГ";

На это он сгенерировал строку символов 0x00c0, 0x00c1, 0x00c2, 0x00c3. То есть компилятор считает, что юникодные символы отличаются от ASCII лишь тем, что имеют размер два байта. Этот компилятор действительно такой тупой или я что-то не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
777777
сообщение Nov 24 2010, 08:25
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



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 еще как-то надо включать?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016