Giả sử chúng ta có hai cấu trúc:Struct con trỏ tương thích
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
Có an toàn để đúc Struct2 *
-Struct1 *
? Thông số ANSI nói gì về điều này? Tôi biết rằng một số trình biên dịch có tùy chọn sắp xếp lại các trường cấu trúc để tối ưu hóa việc sử dụng bộ nhớ, điều này có thể khiến cho hai cấu trúc không tương thích. Có cách nào để chắc chắn mã này sẽ hợp lệ, bất kể cờ trình biên dịch?
Cảm ơn bạn!
* Sắp xếp lại * các thành viên không được AFAIK chuẩn cho phép. Tôi tin rằng chèn số lượng khác nhau của padding sẽ được cho phép mặc dù. – delnan
@delnan Oh vậy thì cấu trúc 'đóng gói' sẽ chỉ tắt liên kết? Cảm ơn, tôi không biết điều đó! – Waneck