问题描述
我考虑一个非常具体的(与时下没用)处理器,称为
There was one attempt at creating a C compiler for Saturn : hp48xgcc
综观其,我注意到,它的基本类型按照通常的惯例GCC与烧焦8位。在这一点上,我想知道:
这难道不是CHAR_BIT打算提供元件单元的大小?
这似乎是由上暗示
Looking at its documentation, I noticed that its basic types follow the usual GCC convention, with char 8 bits. At this point, I wondered :Is it not the intention of CHAR_BIT to provide the size of the element unit ?This seems to be hinted by GCC own documentation :
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
在此情况下,考虑到土星的架构,这将是最好有CHAR_BIT = 4
In this case, considering the Saturn architecture, it would be better to have CHAR_BIT = 4
还是我误解CHAR_BIT的意义?
Or do I misunderstand the signification of CHAR_BIT ?
推荐答案
没有。根据C99标准的 CHAR_BIT最小值为8 (顺便说一句,这是事实也是C89 / 90)。
No. According to C99 standard CHAR_BIT minimum value is 8 (BTW, this is true also for C89/90).
C99标准草案(WG14 / N1256)的相关部分如下:
The relevant section of the C99 draft standard (WG14/N1256) is the following:
下面给出的值应以适合在#if使用前不变pressions被替换
preprocessing指令。此外,除了CHAR_BIT和MB_LEN_MAX,所述
下列事项应由具有相同类型的会前pressions被替换
前pression是根据整数变换的相应类型的对象
促销。他们实现定义的值应是大小相等或更大
(绝对值)的那些中所示,使用相同的符号。
- 为最小目标位的数字,它是不是一个位字段(字节)
— number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT            8
这篇关于是CHAR_BIT = 4 C标准授权的可能值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!