文字列リテラルと文字リテラルに使用される実行文字セットを指定します。 このディレクティブは、u8 プレフィックスでマークされているリテラルには必要ありません。
構文
#pragma execution_character_set("target")
パラメーター
target
ターゲットの実行文字セットを指定します。 現在サポートされているターゲット実行セットは "utf-8" のみです。
解説
このコンパイラ ディレクティブは、Visual Studio 2015 更新プログラム 2 以降のバージョンでは廃止されています。
/execution-charset:utf-8 または /utf-8 コンパイラ オプションは、拡張文字を含むナロー文字リテラルと文字列リテラルで u8 プレフィックスと一緒に使用することをお勧めします。
u8 プレフィックスの詳細については、「文字列リテラルと文字リテラル」を参照してください。 コンパイラ オプションの詳細については、「/execution-charset (実行文字セットの設定)」および「/utf-8 (ソース文字セットおよび実行文字セットの UTF-8 への設定)」を参照してください。
#pragma execution_character_set("utf-8") ディレクティブは、ソース コード内のナロー文字リテラルとナロー文字列リテラルを実行可能ファイルで UTF-8 としてエンコードするようコンパイラに指示します。 この出力エンコードは、ソース ファイルのエンコード方法とは関係ありません。
既定では、コンパイラがナロー文字とナロー文字列をエンコードするときに、現在のコード ページを実行文字セットとして使用します。 現在のコード ページの範囲外の Unicode または DBCS 文字は、出力で既定の置換文字に変換されます。 Unicode と DBCS の文字は、意図していない下位バイトに切り捨てられます。 ソース ファイルでリテラルに UTF-8 エンコードを指定するには、u8 プレフィックスを使用します。 コンパイラは、これらの UTF-8 でエンコードされた文字列を変更せずに出力に渡します。 プレフィックスとして u8 が付いているナロー文字リテラルは、1 バイトに収める必要があります。そうしないと、出力時に切り捨てられます。
既定では、Visual Studio では、出力のソース コードの解釈に使用されるソース文字セットとして現在のコード ページを使用します。 ファイルが読み込まれると、Visual Studio は、現在のコード ページに従ってファイルを解釈します。ただし、ファイルにコード ページが設定されている場合、 または、ファイルの先頭でバイト オーダー マーク (BOM) または UTF-16 文字が検出される場合を除きます。 一部のバージョンの Windows では、UTF-8 を現在のコード ページとして設定できません。 自動検出で、これらのバージョンで BOM なしに UTF-8 でエンコードされたソース ファイルが検出された場合、Visual Studio は現在のコード ページでエンコードされているものと想定します。 指定されたまたは自動的に検出されたコード ページの範囲外にあるソース ファイル内の文字が原因で、コンパイラの警告とエラーが生じる可能性があります。
関連項目
Pragma ディレクティブと、__pragma キーワードと _Pragma キーワード
/execution-charset (実行文字セットの設定)
/utf-8 (ソース文字セットおよび実行文字セットの UTF-8 への設定)