#pragma push_macro("macro_name")是把macro_name宏的值压入堆栈,而利用#pragma pop_macro("macro_name")来把macro_name宏的值pop出,这里看一个例子
下面是#pragma pack(...)
一种简单的情况是#pragma pack(n)其中n的类型一般为int,他的用法一般和sizeof等关键字连用,详细使用见下:
#pragma pack(n)是用来来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。结构的总大小也有个约束条件,分下面两种情况:如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数;
否则必须为n的倍数
穿插说明一下sizeof,见代码
还有一种#pragma pack()的用法就是如下用法