Есть ли в C char8_t?

Я искал на многих сайтах и ​​ничего не нашел. Я знаю, что char8_t - ключевое слово в C++, начиная с C++ 20. Я пытаюсь узнать в C, они набирают unsigned char к char8_tв C23 (с выпуском символьных литералов u8 ). Кто-нибудь может меня прояснить.

3 ответа

Решение

Поддержка типа (или typedef) еще не добавлена ​​в C++ 23. Я отправил N2331, чтобы добавить его еще в 2018 году, но тогда не смог присутствовать на каких-либо собраниях, чтобы отстаивать его. Сейчас я работаю над завершением пересмотра, который я намерен представить в WG14 на следующей неделе или около того. Это будет N2653 (черновик доступен здесь ). Я, конечно, не знаю, примет ли WG14 его для C23.

Черновик предложения не просто добавляет typedef. Также предлагается изменить тип строковых литералов на char8_t/ unsigned char соответствовать u8 символьные константы, что mbrtoc8() а также c8rtomb() должны быть добавлены функции из C++ 20 и добавлены некоторые атомарные макросы и типы.

Таких вещей нет, но вы можете получить их с помощью typedef, что эквивалентно unsigned char:

      typedef unsigned char char8_t;

Теперь у вас есть char8_t.

NB: я изначально ответил, предлагая использовать макрос (определить), но для типов данных typedef - это способ

Нет нет char8_t пока что в C23.

Другие вопросы по тегам