-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
即可启用
在 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
即可启用