#pragma pack(n)的使用


在缺省情況下,編譯器為了讓程序跑得跟快,減少CPU讀取數據的指令周期,對結構體的存儲進行了優化,

比如:如下結構體

struct s 

{

char ch;

int i;

};

雖然變量ch本身只有1個字節,但實際上卻占用掉了4個字節,為的是讓第二個int型成員i的地址能夠被4整除。因此實際占用的是8個字節,sizeof(s) = 8。

一般地,可以通過下面的方法來改變缺省的對界條件:
使用偽指令#pragma pack (n),C編譯器將按照n個字節對齊。
使用偽指令#pragma pack (),取消自定義字節對齊方式。

比如:如下結構體

#pragma pack(1)

struct s 

{

char ch;

int i;

};

#pragma pack()

這樣結構體實際占用了5個字節,sizeof(s)=5;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM