有什么方法可以在ANSI c中创建大小为32的字符?

时间:2015-02-13 19:12:45

标签: c c89 char32-t

我知道C ++ 11有一个4字节的char32_t类型,我想知道是否有可能在C中实现类似的东西。我写的程序需要有所有char数组都是4个字节的倍数。

2 个答案:

答案 0 :(得分:1)

您打算如何处理这些数据?您是仅在32位变量中使用单个字节,还是在其中存储实际的32位数据?

一个简单的解决方案是创建自己的抽象数据类型,以便以后可以更改它:

#include <stdint.h>
typedef int32_t mChar;
mChar myChar32Array[100]; // Allocates 100x32-bit values

虽然修补char相关数据类型存在一个重大缺陷:许多库和代码片段假设在处理文本时charchar。如果您计划使用字符串操作函数并期望它们在多个系统中工作,则始终将字符串声明为char的数组,而不是signed charunsigned char。您应该使用unsigned char的唯一时间是,如果您直接使用8位二进制数据,并且不想处理意外的奇怪信号,例如符号扩展,如果您不是,那将为您提供有趣的值。小心。

答案 1 :(得分:0)

C11标准支持使用UTF-32编码的字符串char32_t,例如:

#include <uchar.h>

int main() {
    char32_t *str = U"Hello world";
}

程序用gcc -std=c11完全编译。