Tôi viết một trình phân tích cú pháp cho một số cấu trúc dữ liệu, sau hàng giờ gỡ lỗi Tôi phát hiện ra rằng vấn đề là Visual Studio không giải thích các cấu trúc như tôi đã nói. Có vẻ như một số "đệm" được sử dụngĐịa phương vô hiệu hóa đệm
struct foo {
unsigned char a; //0x00
unsigned char b; //0x01
unsigned int c; //0x02
unsigned int d; //0x06
unsigned int e; //0x0A
unsigned int f; //0x0E
//0x12
};
Tôi mong đợi "sizeof (foo) = 4 * 4 + 2 = 18" nhưng tôi nhận được "sizeof (foo) = 20". Có khả năng để biến padding chỉ cho cấu trúc đặc biệt này? Tôi đã thử
__declspec(align(1)) struct foo { ...
nhưng nó không hoạt động. Cảm ơn sự giúp đỡ của bạn.
Tôi nghĩ [bài viết này trên MSDN sẽ giúp] (http://msdn.microsoft.com/en-us/library/ms253935%28v=vs. 90% 29.aspx). –
Bạn đang biên dịch với '/ Zp 1'? –
@MartinBroadhurst Điều đó sẽ vô hiệu hóa toàn cầu padding, Giải pháp của hans hoạt động. – Listing