在VC下如何让sizeof(struct )变成4的倍数。
目的:让该工程下定义的所有结构体的大小都是4的倍数。
比如
struct node{
char cfirst;
};
printf("sizeof(struct node)=%d",sizeof(struct node));// 4
如何在VC中达到上面的目的呢?
1、尝试用
#pragma pack(4)
struct node{
char cfirst;
};
printf("sizeof(struct node)=%d",sizeof(struct node));// 输出的还是1
[解决办法]
我刚才试了半天也是1,怀疑应该是要修改编译器选项,按这个搜一下外网吧,我上不了
[解决办法]
你的要求用正常的办法做不到滴。对齐数 = min(全局对齐数,max(成员的字节数))。楼主给出的代码通过pragma指定了全局对齐数为4bytes,但max(成员的字节数) = 1byte。所以对齐数 = min(4, 1) = 1
[解决办法]
楼主的意思是不能改代码,但要让sizeof返回4,这样的话只能改编译器了