2010-06-13 24 views

cevap

12

Evet, yapısı nesne içinde 6.7.2.1," uygun olmayan bit alanı üyeleri için doğru olmalıdır ve bit alanlarının yer aldığı birimler, bildirildikleri sırayla bu artışa hitap ederler, uygun şekilde dönüştürülmüş bir yapı nesnesinin bir işaretçisi, ilk üyesine işaret eder (veya eğer bu üye bir bit alanıysa, o zaman) içinde bulunduğu birim) ve tam tersi, bir yapı nesnesi içinde adsız olmayan dolgu olabilir, ancak başında değil.

+1

'Uygun şekilde dönüştürülmüş' ifadesini sevmiyorum. Bu ilişkinin kaderlerle (veya eksikliklerle) kırılabileceğini gösterir. –

+0

@James: İfadeler, bir yapının işaretçisi ile yapının ilk üyesine işaretçi arasında bulunması gereken tip farklılıklarından dolayıdır. –

1

Evet.

ilk üyesi önünde herhangi dolgu olmamalıdır.

bir yapının adresi uygun döküm kullanılması kaydıyla, birinci elemanın adresi ile aynıdır.

resource

5
C Standardında bulmak, ama cevap "evet" ise Can not

- C++ Standart diyor ki:

bir POD-yapı nesnesine bir işaretçi, uygun dönüştürülmüş Bir reinterpret_cast kullanarak, başlangıç ​​üyesine işaret eder (veya bu üye bit alanı ise, o zaman 'un bulunduğu üniteye) ve tersi. [Not: bu yüzden uygun hizalama elde etmek için, bir kabuk-yapı nesnesi içinde gerekli ancak başlangıcında, isimsiz dolgu olabilir. C ve C++ POD nesneleri uyumlu olmalıdır zamanda]

, aynı C