Giả sử tệp tiêu đề sau tương ứng với, ví dụ: một thư viện được chia sẻ. Chức năng xuất khẩu mất một con trỏ đến một cấu trúc tùy chỉnh theo quy định tại tiêu đề này:Liên kết cấu trúc C và tính di động giữa các trình biên dịch
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
Nếu thư viện chia sẻ được xây dựng bằng một trình biên dịch và sau đó được sử dụng từ mã C được xây dựng với trình biên dịch khác nó có thể không làm việc vì một khác nhau liên kết bộ nhớ, như là Memory alignment in C-structs gợi ý. Vì vậy, có cách nào để làm cho định nghĩa cấu trúc của tôi di động trên các trình biên dịch khác nhau trên cùng một nền tảng?
Tôi quan tâm đặc biệt trong nền tảng Windows (dường như nó không có ABI được xác định rõ ràng), mặc dù bạn cũng tò mò muốn tìm hiểu về các nền tảng khác.
Không, trừ khi ai đó đảm bảo với bạn điều đó. –
Không trùng lặp. Ít nhất không phải của câu hỏi được chọn. Cái này có thể tự đứng vững. –
Có bất kỳ câu hỏi nào có chứa từ "struct alignment" tự động trùng lặp với câu hỏi khác ngay cả khi nó không liên quan gì đến nó? .. –