,不知是否安全根据C99的标准,来解释这样一个结构:类型双关语:INT []和struct {INT ...}
struct my_struct_t {
int a;
int b;
int c;
};
作为int[3]
。即这个代码片段是否适合所有ABI?
struct my_struct_t f;
int *i = &f.a;
i[0] = 1; // f.a == 1
i[1] = 2; // f.b == 2
i[2] = 3; // f.c == 3
据我理解标准,编译器允许在结构成员之后添加填料,但不能是阵列内部的任何填充。我是否正确? (如果我是,那么代码示例将产生不确定的行为。)
这是官方不安全的,但可能会在任何理智的实现上工作,因为没有理由对结构中的int数组和int字段有不同的填充规则。 –