/Zc:char8_t
(C++20 char8_t 型を有効にする)
/Zc:char8_t
コンパイラ オプションは、C++20 準拠 char8_t
型サポートを有効にします。 char8_t
は、UTF-8 コード単位を表すために使用される文字型です。
構文
/Zc:char8_t
[-
]
解説
/Zc:char8_t
コンパイラ オプションを使用すると、C++20 標準で規定されているように、char8_t
型のキーワードが有効になります。 これにより、コンパイラは、const char
または const char[N]
型ではなく、const char8_t
または const char8_t[N]
型として u8
プレフィックス付き文字または文字列リテラルをそれぞれ生成します。 C++17 では、char
の配列は、u8
文字列リテラルを使用して初期化できます。 C++20 では、この初期化は正しい形式ではなく、コンパイラ エラー C2440 を引き起こします。 この動作は、ソースの破壊的変更となる可能性があります。 /Zc:char8_t-
を指定することで、コンパイラを C++14 または C++17 の動作に明示的に戻すことができます。
/Zc:char8_t
オプションは、Visual Studio 2019 バージョン 16.1 以降で使用できます。 /std:c++20
以降 (/std:c++latest
など) を指定すると、自動的に有効になります。 それ以外の場合は、既定でオフになっています。
例
const char* s = u8"Hello"; // Compiles in C++17, Error C2440 in C++20
const char8_t* s = u8"Hello"; // Compiles in C++20 or with /Zc:char8_t
このコンパイラ オプションを Visual Studio で使用するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
/Zc:char8_t
または/Zc:char8_t-
を [追加オプション] ペインに追加します。