,不知是否安全根據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字段有不同的填充規則。 –