【发布时间】:2010-12-24 07:28:03
【问题描述】:
如何以单字节精度便携地执行指针运算?
请记住:
-
char在所有平台上都不是 1 字节 -
sizeof(void) == 1仅在 GCC 中作为扩展提供 - 虽然某些平台可能有指针 deref 指针对齐限制,但算术可能仍需要比最小基本 POD 类型的大小更精细的粒度
【问题讨论】:
-
我很好奇 - 哪个不起眼的平台有一个字符而不是一个字节?听起来问题的整个前提是过早的可移植性;)
-
许多 DSP 芯片都有 > 8 位
char类型。但根据定义,sizeof(char) == 1无处不在。我想我也听说过 9 位char系统。 -
至少有一个嵌入式平台,
sizeof(char)与sizeof(int)相同(均为 1),这意味着这两种类型都是相同大小的 32 位整数。不过,我不确定该平台上 machine 字节的大小。 -
我听说过 11 位和 32 位字符。
-
Anacrolix,无关紧要。 char 中的位由 CHAR_BIT 给出。不改变 sizeof(char)。
标签: c compiler-construction portability void-pointers pointer-arithmetic