C語言中爲了保證結構體的運算速度,對結構體進行了對齊操做,默認對齊字節數是按照結構體中佔用字節數最大的簡單數據成員算的,結構體中的結構體不算是簡單數據成員,簡單數據成員包括char、int、short、long、long long、float、double以及他們的unsigned形式(若是有)。
使用#pragma pack(n)可讓結構體按照指定的n字節對齊,可是若是n大於結構體中的最大簡單數據成員的長度,則對齊仍是以最長簡單數據成員的長度爲標準。使用#pragma pack()能夠取消自定義的對齊方式恢復成默認對齊方式。