Поделиться через


/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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Добавьте /Zc:char8_t или /Zc:char8_t- в область "Дополнительные параметры".

См. также

/Zc (Соответствие)
/std (определение стандартной версии языка)