/Zc:char8_t 编译器选项启用符合 C++20 的 char8_t 类型支持。 char8_t 是一种用于表示 UTF-8 代码单元的字符类型。
语法
]$
备注
/Zc:char8_t 编译器选项启用 C++20 标准中指定的 char8_t 类型关键字。 它使编译器分别生成 u8 前缀字符或字符串文字作为 const char8_t 或 const char8_t[N] 类型,而不是作为 const char 或 const 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 中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
将
/Zc:char8_t或/Zc:char8_t-添加到“附加选项:”窗格中。