2010-10-25 68 views
8

以下聲明實際上做了什麼以及它有什麼影響?C++ #pragma pack

#pragma pack(push,8) 
+0

http://msdn.microsoft.com/en-us/library/2e70t5y1(VS.80).aspx – 2010-10-25 12:43:17

回答

13

它將當前pack設置到堆棧(這樣就可以在以後通過pop還原),然後設置爲結構元件,以8個字節的對準。任何並非與8字節邊界自然對齊的東西都會在其之前插入填充字節以保持所需的對齊。

+5

只是增加了如何看到效果:定義一個包含不同大小元素的結構(例如' char','short','long','double')。然後使用'sizeof'確定結構的大小。在結構周圍放置一對'#pragma pack(push,n)'和'#pragma pack(pop)',其中'n'的值不同(例如1,2,4,8)。看看sizeof的結果如何變化。作爲選項,請查看結構元素的相對地址變化。 – Flinsch 2010-10-25 12:52:54