#pragma pack(1) 的意义是什么

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 10:46:13
#pragma pack(1) 的意义是什么

#pragma pack(1) 的意义是什么
#pragma pack(1) 的意义是什么

#pragma pack(1) 的意义是什么
设置结构体的边界对齐为1个字节,也就是所有数据在内存中是连续存储的.
比如你在C语言中定义下面这样的结构体:
struct s {
char ch;
int i;
};
然后在主函数中写一句:printf("%d", sizeof(struct s))
也就是输出结构体s所占的字节数
你觉得输出结果会是多少呢?
我们知道,char型占用1个字节,int型占4个字节,那么输出的结果是5吗?
答案是否定的.你可以自己试一下,输出结果为8.
为什么会这样呢?这是因为编译器为了让程序跑得跟快,减少CPU读取数据的指令周期,对结构体的存储进行了优化.实际上第一个char型成员虽然本来只有1个字节,但实际上却占用掉了4个字节,为的是让第二个int型成员的地址能够被4整除.因此实际占用的是8个字节.
而#pragma pack(1)让编译器将结构体数据强制连续排列,这样的话,sizeof(struct s)输出的结果就是5了.

#pragma pack(1) 的意义是什么 #pragma pack(1) and #pragma pack(push, 求每一步的解释 意义#pragma argsused#define C(x,y) xo##y#define FOR(x) for(C(a,x)=1;C(a,x) pack的过去分词 pack的过去分词 Service Pack 我的是Windows Vista Home Basic系统 Windows7 service pack 1 pack 英语翻译:Power Pack® Resistance designed,Engineered in the US and manufactured in China.其中Power Pack® Resistance是商品名,Power Pack是注册商标.1)Engineered 在此处指的是前面的产品是在美国策划的,应为动 server pack 2 和 server pack 1 有什么区别server pack 2 和server pack 1有什么区别?是不是server pack 1的时候,微软经常在发布漏洞补丁,然后补丁到一定数量后,就发行server pack 2,把所以补丁都做到里面? 锂电中pack 是啥?有pack工程师 pack保护电路望详细解释一番 MSP430中断服务程序地址怎么算?#pragma vector=PORT2_VECTOR__interrupt void PORT2_HANDLER(void); 这个地址是是怎么算的?头文件中有定义#define PORT2_VECTOR (1*2u) 不过PORT2的中断入口地址不是0xFFE2吗? pack和bag的区别 pack the schoolbag的意思 pack,packing,packaging的区别? 亚马逊上1-ct 和 pack of 为什么1-ct是40刀 pack of 2是120刀.亚马逊上1-ct 和 pack of 为什么1-ct是40刀 pack of 2是120刀,假如pack of 2是2个的话应该是80刀啊. 已知Q'TY是18 ,CASE PACK 是1 ,P'KGS是18,MEASUREMENTSHI 40*35*76 CBM的数据如何算出答案是1.915TKS 包材区的英文哪个是对的?pack material area // packing material area?