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