登录站点

用户名

密码

#pragma pack(1) and #pragma pack(push,1)的含义

已有 610 次阅读  2010-10-21 15:51

#pragma pack(1) and #pragma pack(push,1)是什么意思 

(1) #pragma pack(1)

     作用:调整结构体的边界对齐,让其以一个字节对齐;

#pragma pack(1) 使结构体按1字节方式对齐

例如:

struct sample
{
char a;
double b;
};

若不用#pragma pack(1)和#pragma pack()括起来,则sample按编译器默认方式对齐(成员中size最大的那个)。即按8字节(double)对齐,则sizeof(sample)==16.成员char a占了8个字节(其中7个是空字节)

若用#pragma pack(1),则sample按1字节方式对齐sizeof(sample)==9.(无空字节)
比较节省空间啦,有些场和还可使结构体更易于控制

 (2) #pragma pack(push,1)

这是给编译器用的参数设置,有关结构体字节对齐方式的设置

大概是指把原来对齐方式设置压栈,并设新的设置为1

上一篇: 用skinmagic给VC6开发的软件换肤 下一篇: VC实现进程自动控制别的窗口

分享 举报