Is there a char8_t in C?



我搜索了很多网站,但一无所获。我知道char8_t是C++中的一个关键字,从C++20开始。我试图在C中找出,他们是否在C23中对unsigned charchar8_t进行了类型定义(随着u8字符文字的发布(。有人能澄清我吗?

char8_t类型(或typedef(的支持尚未添加到C23中。我在2018年提交了N2231来添加它,但当时没能参加任何会议来为它辩护。

编辑:2021-06-06:N2653(char8_t:UTF-8字符和字符串的类型(修订版1((已提交C2x。这里的gcc和这里的glibc都可以实现该建议。提交给gcc和glibc的补丁可以分别在这里和这里找到。

编辑:2022-07-06:N2653库部分的实现终于在glibc中实现,预计将于8月发布2.36版本。

编辑:2022-12-30:N2653(char8_t:UTF-8字符和字符串的一种类型(修订版1((在2022年1月/2月的WG14虚拟会议上被C23接受,措辞如N3054 C工作草案所示。编译器支持存在于gcc的开发中分支中,该分支将于4月或5月以gcc13的形式发布。编译器支持也存在于Clang的开发中分枝中,该分枝将于3月或4月以Clang 16的形式发布。

N2653不仅仅提出了char8_ttypedef。还建议将u8字符串文字的类型更改为char8_t/unsigned char以匹配u8字符常量,添加C++20中的mbrtoc8()c8rtomb()函数,并添加一些与原子相关的宏和类型。

没有这样的东西,但你可以用typedef来拥有它,因为char8_t相当于unsigned char:

typedef unsigned char char8_t;

您现在有一个char8_t

NB:我最初回答了使用宏(定义(的提议,但对于数据类型,typedef是的方式

相关内容

最新更新