您的位置:首页 > 其它

#pragma pack(push,n) 对齐 gcc/vc2008

2010-03-25 11:56 393 查看
#include <iostream>

#define SIZE_TEXT 20

#pragma pack(push, 1)

class ZooMainHeader

{

//#pragma pack(push, 1)

char text[SIZE_TEXT];

unsigned int zoo_tag;

unsigned int zoo_start;

unsigned int zoo_minus;

unsigned char minor_ver;

unsigned char major_ver;

unsigned char type;

unsigned char vdata;

unsigned int acmt_pos;

unsigned short acmt_len;

//#pragma pack(pop)

public:

int isMainHeader()

{

if(zoo_tag != 0 || zoo_start + zoo_minus != 0L)

return 0;

return 1;

}

unsigned int getStrart()

{

return (unsigned int)zoo_start;

}

};

int main(void)

{

printf( "sizeof ZooMainHeader %d/n", sizeof(ZooMainHeader));

return 0;

}

#pragma pack(pop)

以齐放在类内的类外,两种情况下,sizeof(ZooMainHeader)分类别是44(编译器做了额外2字节对齐),42

vs2008没有区别是42,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: