我一直使用以下范例用于遍历静态定义的数组在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