C语言中有字符吗?

ggazkfy8  于 2023-01-01  发布在  其他
关注(0)|答案(3)|浏览(154)

我搜索了很多网站,什么都没有得到。我知道char8_t是C中的关键字,因为C20。我试图找出在C中,他们是typedef-ing unsigned charchar8_t在C23(随着u8 character literals的发布)。谁能澄清我吗?

qvsjd97n

qvsjd97n1#

char8_t类型(或typedef)的支持还没有添加到C23中,我在2018年提交了N2231来添加它,但当时无法参加任何会议来讨论它。
编辑日期:2021年6月6日:N2653 (char8_t: A type for UTF-8 characters and strings (Revision 1))已提交用于C2 x。该建议的实现可用于gcc here和glibc here。提交给gcc和glibc的修补程序分别位于herehere
编辑日期:2022年7月6日:N2653的库部分的实现最终在glibc中实现了landed,预计将于8月份发布2.36版本。
编辑日期:2022年12月30日:在2022年1月/2月的WG 14虚拟会议期间,N2653 (char8_t: A type for UTF-8 characters and strings (Revision 1))被接受用于C23,并且存在N3054 C working draft中所示的措辞。编译器支持存在于gcc的正在开发的分支中,该分支将在4月或5月作为gcc 13发布。编译器支持也存在于Clang的正在开发的分支中,该分支将在3月或4月作为Clang 16发布。
N2653不仅提出了char8_t typedef,它还提出将u8字符串常量的类型改为char8_t/unsigned char以匹配u8字符常量,添加来自C++20的mbrtoc8()c8rtomb()函数,以及添加一些原子相关宏和类型。

q9rjltbz

q9rjltbz2#

没有这样的东西,但你可以用typedef来使用它,因为char8_t等价于unsigned char

typedef unsigned char char8_t;

现在您有了一个char8_t

  • NB:我最初回答提供使用宏(define),但对于数据类型,typedef是方法 *
ljsrvy3e

ljsrvy3e3#

不,到目前为止,C23中还没有char8_t

相关问题