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

Tob*_*obi 9 c++ visual-c++ c++20 visual-studio-2019 char8-t

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

const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20
Run Code Online (Sandbox Code Playgroud)

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

引入“补救” 的提案char8_t预计并提到在 clang 和 gcc 中有-fno-char8_t切换回旧行为的标志(同时仍然能够享受其他 C++20 功能)。

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

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

Gui*_*cot 9

从 16.1 开始,就有了一致性编译器标志/Zc:char8_t-。减号告诉编译器在使用 C++20 时不要在这里使用一致性模式。相反,/Zc:char8_t可以用来启用它。