-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機能は引き続き利用可能です)。

2番目の提案は、Microsoftが同様のフラグに従い、追加するという期待を設定していますが、設定方法を見つけることができませんでした(少なくともVS 2019、バージョン16.4)。

では、MSVCと同等のものは誰か知ってい-fno-char8_tますか?

回答:


8

16.1以降、準拠コンパイラフラグがあり/Zc:char8_t-ます。マイナスは、C ++ 20を使用するときに、ここで準拠モードを使用しないようコンパイラーに指示します。逆に、/Zc:char8_tそれを有効にするために使用できます。


1
ああ、良い場所です。私はそれがないと言って答えを書こうとしていました:)
オービットのライトネスレース

1
@LightnessRaceswithMonica参照を追加してくれてありがとう!
ギヨームラシコット

私は何かを寄付するべきだと思った:P
オービットでの軽さの

私も知りたかったので、少し改善しました。だから私も寄付すべきです:P
Acorn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.