#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,
#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,
相关文章推荐
- AMD 平台 VC2005下 慎用#pragma pack(push,1)来进行字节对齐
- #pragma pack(push) //保存对齐状态 #pragma pack(4)//设定为4字节对齐
- vc下和gcc的结构体紧凑对齐格式存储【#pragma pack(push,1)、__attribute__ ((packed, aligned(1)))】
- pragma pack(n) 对齐用法详解
- struct 自然对齐和#pragma pack
- 关于pragma pack的用法 字节对齐
- warning malformed '#pragma pack(push[, id], n)' - ignored
- 关于pragma pack的用法--------------C 中的内存对齐问题(转载)
- #pragma pack(push,1)与#pragma pack(1)的区别
- #pragma pack 结构体对齐编译器选项
- 释析#pragma pack(push,n) #pragma pack(n) #pragma pack() #pragma pack(pop)
- #pragma pack 与#pragma pack(push,1)
- #pragma pack(n) 对齐用法详解
- 结构体对齐的具体含义(#pragma pack)
- #pragma pack(push,1) & #pragma pack(pop)
- #pragma pack(push,1) (pop)
- 成员边界对齐#pragma pack(n)
- #pragma pack(1) and #pragma pack(push,1)是什么意思
- 结构体对齐的具体含义(#pragma pack)
- #pragma pack(n)也谈内存对齐