方式一:
/*
n可以取以下5個數中的任意乙個:1,2,4,8,16
來自定義結構體成員的對齊方式
*/#pragma pack(n)
//這裡放置結構體
#pragma pack ()//取消自定義位元組對齊方式
方式二:
/*
n可以取以下5個數中的任意乙個:1,2,4,8,16
來自定義結構體成員的對齊方式
*/#pragma pack(push,n)
//這裡放置結構體
#pragma pack(pop) //編譯器到編譯到此處時將恢復原來的對齊狀態
------------注意--------------
#pragma pack(push) //儲存對齊狀態
#pragma pack(4)//設定為4位元組對齊
相當於 #pragma pack(push,4)
typedef
struct userinfo yf_userinfo;
以上結構體的總大小是12位元組,其中第乙個char型本應該是1個位元組的,但是系統為了提高效能,對結構體進行了對齊,使其擁有4個位元組的空間大小。
#pragma pack(push,1)
typedef struct userinfo yf_userinfo;
#pragma pack(pop)
設定結構體按乙個位元組對齊,此時系統不再對結構體進行自動對齊,結構體中的成員佔空間大小由自身的型別來決定,系統不再干預。 預處理,結構體
q 巨集定義的定義和型別。a 巨集定義是由源程式中的巨集定義命令完成的,巨集代換是由預處理程式自動完成的,在 c語言中,巨集定義分為有參和無參兩種。無參巨集巨集名後不帶引數,其定義的一般形式為 define 識別符號 字串 帶參巨集的引數為形參,其一般形式為 define 巨集名 形參表 字串。q ...
預處理與結構體
巨集定義 檔案包含 條件編譯1 巨集定義不是說明或語句,不需要在結尾加上分號 2 巨集定義必須寫在函式之外,其作用域是巨集定義命令起到源程式結束,如需要終止可使用 undef命令 3 預處理程式不對巨集定義做任何檢查,如有錯誤,只能在編譯被巨集定義展開後的源程式時發現1 巨集會在編譯器在對源 進行編...
預處理和結構體2
q 結構體的作用及其優勢。a struct將相關聯的資料打包成乙個整體,方便使用,我們將多種資料組合起來的整體稱為結構體。結構體可以很好的將需要傳送的內容儲存在乙個整體中,同時結構體也可以壓縮函式引數個數。q 結構體和陣列的比較。a 同 都由多個元素組成 各元素在記憶體中的儲存空間是連續的 異 陣列...