我在VC++ 2008中編寫C程序我有下面的結構和枚舉。如何在Visual C++中將C中的字符大小設置爲size char
test.h
#ifndef _TEST_H_
#define _TEST_H_
typedef enum Selection
{
None,
Single,
Multiple
} Selection_T;
typedef struct Test_struct
{
char var1;
char var2;
Selection_T sel;
} Test_struct_T;
#endif
test.c的
#include "stdio.h"
#include "test.h"
Test_struct_T test_obj = { 1, 2, Multiple };
int main()
{
char *pbyte = (char *)&test_obj;
int i=0;
for(i=0;i<sizeof(test_obj);i++)
printf ("%x\n",*(pbyte+i));
getchar();
return 0;
}
我想SEL應該在結構第3個字節,但編譯器處理枚舉爲整啓動,以便SEL從5日開始(2洞)後請幫助我編譯器將enum作爲字節處理,所以sel應該從結構的第3個字節開始。 如果有Pragma,它會對我有用。 感謝推進
閱讀有關['的#pragma pack'](http://msdn.microsoft.com/en-us/library/2e70t5y1。 ASPX)。 –
即使您的編譯器將枚舉視爲字節(請參閱Dabo答案),它也不會將您從結構對齊中解救出來(請參閱Joachim註釋)。把它們放在一起... –