【发布时间】:2015-02-13 19:12:44
【问题描述】:
我知道 C++11 有一个 char32_t 类型,它是 4 个字节,我想知道是否可以在 C 中实现类似的东西。我正在编写的程序需要所有 char 数组都是 4 的倍数字节。
【问题讨论】:
-
longs 在 C 中是 32 位的。这个不能用吗?
-
@h7r 否。在 C 中,除了
char是 8 位之外,关于位宽的保证很少,stdint.h中的固定宽度类型是它们所宣传的.long至少为 32 位,但可以更多。此外,根据系统的不同,long和long long之类的内容可能不适合单个寄存器,因此涉及 32 位或 64 位变量的某些类型的操作可能必须在软件中执行,从而大大减慢了程序。不过是个好问题。 en.wikipedia.org/wiki/C_data_types -
它是 C。你可以以任何你喜欢的方式推送字节。问题在于库:像 printf() 和 strcpy() 这样的东西不知道如何处理 32 位字符,所以你必须自己重写所有这些。
-
@Dogbert 点。抛开性能问题不谈,正如你所说,
long“至少”是 32 位,所以我的想法不适合吗? -
为什么不用
int_least32_t?