我正在考虑一个非常具体(现在无用的)处理器,名为saturn。
这个CPU的一个奇怪特性是它的元素单位是半字节(4位),而不是字节(8位)。它不仅仅是装饰性的,任何指针值都以半字节表示。
尝试为土星创建C编译器:hp48xgcc
看看它的documentation,我注意到它的基本类型遵循通常的GCC约定,使用char 8位。在这一点上,我想知道: CHAR_BIT是否有意提供元素单元的大小? 这似乎是由GCC own documentation暗示的:
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
在这种情况下,考虑到土星架构,最好让CHAR_BIT = 4
或者我是否误解了CHAR_BIT的含义?
答案 0 :(得分:10)
没有。根据C99标准 CHAR_BIT最小值为8 (BTW,对于C89 / 90也是如此)。
C99标准草案(WG14 / N1256)的相关部分如下:
5.2.4.2.1整数类型的大小
下面给出的值应替换为适用于#if的常量表达式 预处理指令。而且,除了CHAR_BIT和MB_LEN_MAX之外 以下内容应替换为与a相同类型的表达式 表达式,它是根据整数转换的相应类型的对象 促销活动。它们的实现定义值的大小应相等或更大 (绝对值)显示的那些,具有相同的符号。
- 最小对象不是位字段(字节)的位数
CHAR_BIT 8
答案 1 :(得分:5)
没有。对于支持C89标准或更高版本的所有编译器,CHAR_BIT保证至少为8位。