读书人

在VC下怎么让sizeof(struct )变成4的倍

发布时间: 2013-04-26 16:27:53 作者: rapoo

在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


[解决办法]
引用:
看来我还是没描述清楚啊。



C/C++ code
?



12345

struct node{ char cfirst; }; printf("sizeof(struct node)=%d",sizeof(struct node));//== 4
不修改任何代码。char 是占用一个字节的,如何让VC 里面定义的结构体大小都……
我刚才试了半天也是1,怀疑应该是要修改编译器选项,按这个搜一下外网吧,我上不了
[解决办法]
引用:
我的意思是如何让VC下运行 C/C++ code?1234 struct node{ char cfirst; }; printf("sizeof(struct node)=%d",sizeof(struct node));//== 4
而不是去修改代码。若定义int 类型当然等于4了啊。


你的要求用正常的办法做不到滴。对齐数 = min(全局对齐数,max(成员的字节数))。楼主给出的代码通过pragma指定了全局对齐数为4bytes,但max(成员的字节数) = 1byte。所以对齐数 = min(4, 1) = 1
[解决办法]
楼主的意思是不能改代码,但要让sizeof返回4,这样的话只能改编译器了

读书人网 >C语言

热点推荐