#pragma pack:改变C编译器默认的对齐方式,设定变量以n字节对齐方式
#pragma pack的基本用法
该指令的作用是指定结构体、联合以及类成员的对齐方式。语法如下:
#pragma pack( [show] | [push | pop] [, identifier], n )
其中,pack提供数据声明级别的控制,对定义不起作用;调用pack时不指定参数,n将被设成默认值;一旦改变数据类型的对齐方式,会使得结构体占用的内存减少,但是性能会下降。
参数说明如下:
show:可选参数,显示当前对齐的模数,以警告消息的形式被显示;
push:可选参数,将当前指定的对齐模数进行压栈操作,这里的栈是内部编译器堆栈,同时设置当前的对齐模数为n;如果n没有指定,则将当前的对齐模数压栈;
pop:可选参数,从内部编译器堆栈中删除最顶端的记录。如果没有指定n,则当前栈顶记录即为新的对齐模数;如果指定了n,则n将成为新的对齐模数;如果指定了identifier,则内部编译器堆栈中的记录都将被出栈直到identifier被找到,然后将identitier出栈,同时设置对齐模数为当前栈顶的记录;如果指定的identifier并不存在于内部编译器堆栈,则出栈操作被忽略;
identifier:可选参数,当同push一起使用时,赋予当前被压入栈中的记录一个名称;当同pop一起使用时,从内部编译器堆栈中出栈出所有的记录直到identifier被pop出,如果identifier没有被找到ÿ