/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_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-
添加到“附加选项:”窗格中。