-fno-char8_t的MSVC等效项是什么?


9

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

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

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

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

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

那么有人知道MSVC的含义-fno-char8_t是什么吗?

Answers:


8

从16.1开始,存在一致性编译器标志/Zc:char8_t-。减号指示编译器在使用C ++ 20时使用一致性模式。相反,/Zc:char8_t可以用来启用它。


1
哦,好地方。我正要写一个答案说没有一个:)
Lightness Races in Orbit

1
@LightnessRaceswithMonica感谢您添加参考!
Guillaume Racicot

以为我应该做出一些贡献:P
轨道轻轨比赛

我也想知道一些改进,因为它是我想知道的。所以我也应该做出贡献:P
Acorn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.