首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-04-26 
在VC下如何让sizeof(struct )变成4的倍数。目的:让该工程下定义的所有结构体的大小都是4的倍数。比如struct

在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,这样的话只能改编译器了

热点排行