Xét khai báo sau trong VC:
PHP Code:
struct vd1 {
       
unsigned char a[13];
       
unsigned char b[4];
       
long c;
}; 
Nếu theo cách tính thông thường thì sizeof(vd1) phải là 21. Nhưng thực tế trong VC giá trị này là 24. Điều này là do tuỳ chọn biên dịch struct alignment . Trong BC tham số này là 1. Trong VC nó là 8. Do đó nó sẽ làm tròn size của một struct theo bội số của 8. Nghĩa là nếu struct của bạn có kích thước từ 17->23 nó sẽ được làm tròn thành 24.
Bạn có thể chỉnh tham số này trong project settings, Compile Option C/C++ -> Code Generation -> Structure Alignment, chỉnh thành 1. Bạn phải chỉnh cả trong Win32 Debug và Win32 Release.
Nếu chỉ muốn align cho riêng một struct, bạn làm như sau:
PHP Code:
#pragma pack(push,1)
struct vd1 {
...
};
#pragma pack(pop) 
Sưu tầm từ diendantinhoc.net