4

根据 C11,一个对象是:

#C11 § 3:术语、定义和符号
对象:执行环境中的数据存储区域,其内容可以表示值。

一个位域可以表示一个值,所以它应该是一个对象。但是,有人告诉我事实并非如此。

正确答案是什么?

4

1 回答 1

7

6.2.6.1p2 说“除了位域,对象由一个或多个字节的连续序列组成 [...] ”,因此位域是对象似乎很清楚。同样,6.2.6.1p4 指的是“非位域对象”。

3.5p1定义位为数据存储单位;位字段是位区域,因此必须是数据存储区域。该标准区分对象和内存位置(内存位置是“标量类型的对象,或所有具有非零宽度的相邻位字段的最大序列”;3.14p1),因此对象不需要具有不同的内存位置。

于 2012-10-19T16:46:55.947 回答