Здравствуйте Micker, Вы писали:
S>>Работает
, но непонял почему
, объясни для тех кто на бронепоезде и с первого раза не въежжает.
struct s { BYTE b1; BYTE b2; DWORD dw3; BYTE b4; };
+-------------------+-------------------+-------------------+
+----+----+----+----+----+----+----+----+----+----+----+----+
| b1 | b2 | | | <------dw3------> | b4 | | | | -- sizeof(s)==12
+----+----+----+----+----+----+----+----+----+----+----+----+
|--------> |------------->
выравнивание до границы слова
struct p { BYTE b1; BYTE b2; BYTE b3; DWORD dw4; };
+-------------------+-------------------+
+----+----+----+----+----+----+----+----+
| b1 | b2 | b3 | | <------dw4------> | -- sizeof(p)==8
+----+----+----+----+----+----+----+----+
|--->
выравнивание до границы слова
pragma pack(push,1);
+-------------------+-------------------+
+----+----+----+----+----+----+----+
| b1 | b2 | <------dw3------> | b4 | -- sizeof(s)==7
+----+----+----+----+----+----+----+
+----+----+----+----+----+----+----+
| b1 | b2 | b3 | <------dw4------> | -- sizeof(p)==7
+----+----+----+----+----+----+----+