關於VS2008中結構數據對齊的總結

問題的提出:首先看一下代碼

#include
#include

typedef struct
{
char c;
int i;
float j;

}TSTRUCT;

int main(void)
{
printf("char size = %d\n", sizeof(char));
printf("int size = %d\n", sizeof(int));
printf("float size = %d\n", sizeof(float));
printf("TSTRUCT size = %d\n", sizeof(TSTRUCT));
return 0;
}



 

這段代碼的輸出爲

char size = 1
int size = 4
float size = 4
TSTRUCT size = 12

 

按照我的理解是想構建一個9個字節的結構,但是分開來計算的大小與結構總體的大小不一致,這個問題讓我糾結了幾天,後來在朋友的幫助下得以解決,原來在VS中的設置可以改變結構數據大小的提取方式,具體步驟如下。

1、在在解決方案頁面下單擊右鍵,選擇項目屬性;

2、單擊C/C++ ->代碼生成,改變結構成員對齊,選擇1字節,在運行程序。

 

 

更改後的輸出:

char size = 1
int size = 4
float size = 4
TSTRUCT size = 9
完全按照我設計的輸出,問題得到解決。

此問題容易出現在讀取整塊數據的時候,當讀取的數據按照結構體大小讀取就會容易出現錯誤。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章