Jaki jest odpowiednik MSVC dla -fno-char8_t?


9

W C ++ 20 u8literałów łańcuchowych jest opartych na char8_ttypie. Celowo nie przechodzą już na char const*:

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

Oczywiście ostatecznym celem migracji do C ++ 20 jest całkowite przejście na nowe zachowanie (w powyższym przykładzie: zmiana typu str). Jednak ze względu na biblioteki stron trzecich często nie jest to możliwe natychmiast.

Propozycje, które wprowadzają i „naprawiają”, char8_t przewidują to i wspominają, że w clang i gcc jest -fno-char8_tflaga, aby powrócić do starego zachowania (wciąż będąc w stanie cieszyć się innymi funkcjami C ++ 20).

Druga propozycja określa oczekiwanie, że Microsoft podąży za nią i doda podobną flagę, ale nie udało mi się znaleźć sposobu jej ustawienia (przynajmniej w VS 2019, wersja 16.4).

Czy ktoś wie, czym jest odpowiednik MSVC -fno-char8_t?

Odpowiedzi:


8

Od wersji 16.1 dostępna jest flaga kompilatora zgodności /Zc:char8_t-. Minus mówi kompilatorowi, aby nie używał tutaj trybu zgodności podczas używania C ++ 20. Przeciwnie, /Zc:char8_tmożna go włączyć.


1
Och, dobre miejsce. Już miałem napisać odpowiedź, że nie ma żadnej :)
Wyścigi lekkości na orbicie

1
@LightnessRaceswithMonica dzięki za dodanie referencji!
Guillaume Racicot

Myślałem, że powinienem coś wnieść : P
Wyścigi lekkości na orbicie

Ulepszyłem to trochę, ponieważ chciałem to wiedzieć; więc powinienem również przyczynić się do: P
Acorn
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.