0

グローバル配列を定義するために非ASCII文字を使用する場合、たとえば次のようになります。

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

したがって、Cは、ロケールを変更してから、それらのインデックスを介して配列にアクセスする状況を処理しますか?これはどのようにコンパイルされますか?なぜなら'č'、エンコーディングが異なれば価値も異なるからです。

4

1 に答える 1

1

コンパイラは、ソースコード内の文字を、ソースコードエンコーディングから、コンパイル時に選択される実行ワイド文字セットに変換する必要があります。その場合、値は、そのエンコーディングでその文字が何であれ、整数値を持つ定数になります。toを呼び出しsetlocale()ても、値には影響しません。

于 2011-11-29T17:21:58.210 に答える