比特场是一个对象吗?

时间:2012-10-19 16:39:53

标签: c object bit-fields

根据C11,对象是:

  

#C11§3:术语,定义和符号
   object :执行环境中的数据存储区域,内容   这可以代表价值观。

位域可以表示一个值,因此它应该是一个对象。但是,我被告知事实并非如此。

答案是什么?

1 个答案:

答案 0 :(得分:7)

6.2.6.1p2表示“除了位字段外,对象由一个或多个字节的连续序列组成[...] ”,因此很明显位字段是对象。同样,6.2.6.1p4引用“非位字段对象”。

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