Компилятор Intel C и префикс L "" - PullRequest
3 голосов
/ 14 февраля 2010

Как определить русские строки в компиляторе Intel C? В MSVS 2008 я делаю так:

_wsetlocale(LC_ALL, L"Russian");
wprintf(L"текст");

И это работает. В ICC не работает.

1 Ответ

1 голос
/ 17 февраля 2010

Чтобы диагностировать проблему, я бы проверил, какие значения эти символы кодируются, как во время компиляции. С кодом вроде:

wchar_t *x = L"текст";
for(int i=0; x[i] != L'\0'; i++)
{
  printf("%02x\n", x[i]);
}

Вы можете изменить это "%02x" на "%04x", если sizeof(wchar_t) == 4.

Если значения отличаются, вероятно, это проблема времени компиляции, когда компиляторы используют разные кодировки для интерпретации исходных файлов.

Я бы не использовал кодовые точки> U + 007F в исходных файлах, выводил строки в файлы ресурсов и загружал их, используя соответствующую кодировку. Если хотите, вы можете попробовать использовать escape-последовательности Unicode (например, L"\u0442\u0435\u043a\u0441\u0442").

...