分类: C/C++
2009-04-22 10:23:48
#pragma 其实就是控制编译的参数
#pragma pack(1) 是指定字节对齐方式为 1 byte
由于编译器存在数据对齐的问题,如果在定义数据类型的时候不用这两个东东,编译器就会按照默认的方式进行对齐,比如一个BYTE型的变量,长度就可能不再是一个字节,会出现一些预想不到的结果.
举个简单的例子:
struct st
{
int m_iMember1;
char m_cMember2;
long m_lMember3;
}
在使用#pragma pack(1) 时sizeof(st)=9(32位机器)
vc默认:sizeof(st)=12 因为VC默认以8字节对齐,其他编译器可能不一样。
使用#pragma pach(4): sizeof(st)=12;