/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 で使用するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。

  3. /Zc:char8_t または /Zc:char8_t-[追加オプション] ペインに追加します。

関連項目

/Zc (準拠)
/std (言語の標準バージョンの指定)