我一直使用以下範例用於遍歷靜態定義的數組在C:數組元素計數用C
struct foo { ... };
struct foo array[10];
for (int i; i < sizeof(array)/sizeof(array[0]); i++)
...
的,那麼,這個工作每次到目前爲止;-)
但它使奇蹟,可這不破,如果結構實際上是長度不自然對齊,例如:
struct foo { long a; char b; };
不應該編譯器決定sizeof(struct foo) == 7
雖然sizeof(array) == 32
由於對齊(LP64數據模型)?
如果我的假設是真實的,我正在尋找一個規範的參考,或者如果我的假設並不總是成立的話,我會找一個反例。 –
BTW是一個整數除法,它不能給你錯誤的數字。我錯了嗎? – LPs
「_S不應該由編譯器決定'sizeof(struct foo)== 7'_」不一定,可以有填充。 – emlai