CHAR_BIT = 4是C标准授权的可能值吗?

时间:2013-08-30 16:41:50

标签: c

我正在考虑一个非常具体(现在无用的)处理器,名为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的含义?

2 个答案:

答案 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位。