コンパイラにオブジェクトファイル内で UTF-16 文字列に変換させたい文字列リテラルがコードに含まれる場合、このオプションを使用します。このオプションが指定されていない場合、コンパイラは 16 ビット文字列リテラルの生成、認識のいずれも行いません。このオプションを使用すれば、U"ASCII_string" 文字列リテラルが unsigned short int の配列として認識されます。このような文字列はまだ標準となっていないので、このオプションは、非標準 C++ の認識を可能にします。
すべてのファイルを、このオプションによってコンパイルしなければならないわけではありません。
ISO10646 UTF-16 文字列リテラルを使用する国際化アプリケーションをサポートする必要がある場合には、-xustr=ascii_utf16_ushort を指定します。-xustr=no を指定すれば、コンパイラが U"ASCII_string" 文字列リテラルを認識しなくなります。このオプションのコマンド行の右端にあるインスタンスは、それまでのインスタンスをすべて上書きします。
-xustr=ascii_ustf16_ushort は、U"ASCII_string" 文字列リテラルを指定しなくてもかまいません。そのようにしても、エラーとはなりません。
デフォルトは -xustr=no です。引数を指定しないで -xustr を指定した場合、コンパイラはこの指定を受け付けず、警告を出力します。C または C++ 規格で構文の意味が定義されると、デフォルト値が変わることがあります。
次の例は、U が先頭に付いた、引用符に入った文字列リテラルを示しています。-xustr を指定するコマンドも示しています。
example% cat file.cc const unsigned short *foo = U"foo"; const unsigned short bar[] = U"bar"; const unsigned short *fun() {return U"fun"}; example% CC -xustr=ascii_utf16_ushort file.cc -c |
16 ビットの文字リテラルはサポートされていません。