ChinaUnix最近有個貼子讨論熱烈,在這裡記錄一下我的了解,struct的對齊是遵照下列二個條件中最小的一個進行的:
1.#pragma pack(N)中N指定的值
2.struct中最大的成員(請注意不是指sizeof值最大的那個,而應當是__alignof__值最大的那個)
對于double等幾個類型,它的alignof值是可通過編譯開關-mno-align-double和-malign-double來控制的,其中-mno-align-double表示double的alignof值為字長,而-mno-align-double表示alignof值為兩個字長。但是alignof的值不會超過sizeof值,且其總是2的幂數,是以在64位上double的alignof和sizeof總是相同的。
本文轉自eyjian 51CTO部落格,原文連結:http://blog.51cto.com/mooon/910280,如需轉載請自行聯系原作者