【发布时间】:2010-12-09 08:44:06
【问题描述】:
我知道 C 语言的规范并没有规定每个整数类型的确切大小(例如,int)。
我想知道的是:在 C(不是 C++)中有没有一种方法可以定义具有特定大小的整数类型,以确保它在不同的体系结构中是相同的?喜欢:
typedef int8 <an integer with 8 bits>
typedef int16 <an integer with 16 bits>
或任何其他允许程序的其他部分在不同架构上编译的方式。
【问题讨论】:
-
@zilgo:答案可能类似;问题不是。在 126279 中,OP 已经知道 stdint.h; NawaMan(显然)在问这个问题时不在。
-
请注意,您的最后一个假设是错误的。 int 大小的差异不一定会阻止其他架构上的编译,但像
i == i & 0xFFFFFFFF这样的潜在假设可能会。一个优秀的程序员在想要数学模 2^16 时会写& 0xFFFF,而不关心unsigned short是否正好有 16 位。 -
MSalters:当然。我不明白为什么这么多人似乎对固定宽度尺寸有着强烈的渴望 - 在 99% 的情况下,最小 宽度尺寸就是你所需要的。
-
我正在将不同的数据打包到 char 数组(或 char 点)中,所以我需要处理大小。
标签: c cross-platform types integer