-fno-char8_t 的 MSVC 等价物是什么?

What's the MSVC equivalent for -fno-char8_t?

在 C++20 中,u8 字符串文字基于 char8_t 类型。他们故意不再转换为 char const*

const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20

当然,迁移到 C++20 的最终目标是完全适应新行为(在上面的示例中:更改 str 的类型)。但是,由于有第 3 方库,这通常无法立即实现。

introduce and "remedy" char8_t 预期并提到在 clang 和 gcc 中有 -fno-char8_t 标志切换回旧行为的建议(同时仍然能够享受其他 C++20 特性)。

第二个提案设置了微软将遵循并添加类似标志的期望,但我无法找到如何设置它(至少在 VS 2019,版本 16.4 中)。

那么有人知道 -fno-char8_t 的 MSVC 等价物是什么吗?

从 16.1 开始,有一致性编译器标志 /Zc:char8_t-。减号告诉编译器在使用 C++20 时 使用一致性模式。反之使用/Zc:char8_t即可启用