【发布时间】:2012-10-19 16:39:52
【问题描述】:
根据C11,一个对象是:
#C11 § 3:术语、定义和符号
对象:执行环境中的数据存储区域,内容 可以表示值。
位域可以表示一个值,所以它应该是一个对象。但是,有人告诉我事实并非如此。
正确答案是什么?
【问题讨论】:
标签: c object bit-fields
根据C11,一个对象是:
#C11 § 3:术语、定义和符号
对象:执行环境中的数据存储区域,内容 可以表示值。
位域可以表示一个值,所以它应该是一个对象。但是,有人告诉我事实并非如此。
正确答案是什么?
【问题讨论】:
标签: c object bit-fields
6.2.6.1p2 说“除了位域,对象由一个或多个字节的连续序列组成 [...]”,因此位域是对象似乎很清楚.同样,6.2.6.1p4 指的是“非位域对象”。
3.5p1定义位为数据存储单位;位字段是位区域,因此必须是数据存储区域。该标准区分对象和内存位置(内存位置是“标量类型的对象,或所有具有非零宽度的相邻位域的最大序列”;3.14p1)因此对象需要没有明确的内存位置。
【讨论】: