Який еквівалент MSVC для -fno-char8_t?


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).

Друга пропозиція встановлює сподівання, що 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
Жолудь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.