Глобальный массив C с широкими символами в качестве индексов - PullRequest
0 голосов
/ 29 ноября 2011

когда я использую не-ascii символ для определения глобального массива, например:

const char table[] = {[L'č'] = 'c', ...}; 

так что C справляется с ситуацией, где я меняю локаль и затем получаю доступ к массиву через эти индексы? Как это скомпилировано? Потому что 'č' имеет разное значение в разных кодировках.

1 Ответ

1 голос
/ 29 ноября 2011

Компилятор должен преобразовать символ в исходном коде из кодировки исходного кода в набор символов широкого исполнения, который выбирается во время компиляции.Значения будут тогда константами с целочисленным значением любого символа в этой кодировке.Вызов setlocale() не повлияет на значения.

...