/Zc:char8_t
(Включить тип char8_t C++20)
Параметр /Zc:char8_t
компилятора включает поддержку типов соответствия C++20 char8_t
. char8_t
— это тип символа, используемый для представления единиц кода UTF-8.
Синтаксис
/Zc:char8_t
[-
]
Замечания
Параметр /Zc:char8_t
компилятора включает char8_t
ключевое слово типа, указанное в стандарте C++20. Это приводит к тому, что компилятор создает u8
префиксированные символы или строковые литералы как const char8_t
или const char8_t[N]
типы соответственно, а не const char
как или const char[N]
типы. В C++17 массивы char
могут инициализироваться с помощью u8
строковых литералов. В C++20 эта инициализация не сформирована и вызывает ошибку компилятора C2440. Это поведение может быть критическим изменением источника. Вы можете вернуть компилятор к поведению C++14 или C++17 явным образом, указав /Zc:char8_t-
.
Этот /Zc:char8_t
параметр доступен начиная с Visual Studio 2019 версии 16.1. Она включена автоматически при указании /std:c++20
или более поздней версии (например /std:c++latest
, ). В противном случае он отключен по умолчанию.
Пример
const char* s = u8"Hello"; // Compiles in C++17, Error C2440 in C++20
const char8_t* s = u8"Hello"; // Compiles in C++20 or with /Zc:char8_t
Установка параметра компилятора в Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Добавьте
/Zc:char8_t
или/Zc:char8_t-
в область "Дополнительные параметры".
См. также
/Zc
(Соответствие)
/std
(определение стандартной версии языка)