/Zc:char8_t(启用 C++20 char8_t 类型)

/Zc:char8_t 编译器选项启用符合 C++20 的 char8_t 类型支持。 char8_t 是一种用于表示 UTF-8 代码单元的字符类型。

语法

]$

备注

/Zc:char8_t 编译器选项启用 C++20 标准中指定的 char8_t 类型关键字。 它使编译器分别生成 u8 前缀字符或字符串文字作为 const char8_tconst char8_t[N] 类型,而不是作为 const charconst char[N] 类型。 在 C++17 中,可以使用 u8 字符串文字初始化 char 的数组。 在 C++20 中,此初始化格式不正确,并导致编译器错误 C2440。 这种行为可能是一个破坏源的变化。 可以通过指定 /Zc:char8_t- 将编译器显式恢复为 C++14 或 C++17 行为。

从 Visual Studio 2019 版本 16.1 开始,/Zc:char8_t 选项可用。 如果指定 /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(指定语言标准版本)