1 // pragma_pack.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"
 5 #include <windows.h>
 6 #include <iostream>
 7
 8 using namespace std;
 9
10
11
12 /*
13 这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。
14
15 #pragma pack (n)  //C编译器将按照n个字节对齐。
16 #pragma pack ()   //取消自定义字节对齐方式。
17
18
19 #pragma  pack (push,1)  //把原来对齐方式设置压栈,
20                         //并设新的对齐方式设置为一个字节对齐
21
22 #pragma pack(pop)       //恢复对齐状态
23
24 因此可见,加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大
25
26 如:
27
28 #pragma pack(push) //保存对齐状态
29
30 #pragma pack(4)//设定为4字节对齐
31
32 相当于 #pragma  pack (push,4)
33 */
34
35 //#pragma pack(1)
36 //调整结构体的边界对齐,让其以一个字节对齐
37
38 #pragma pack(push,1)
39
40
41 typedef struct _A_
42 {
43     char a;
44     double b;
45 }A;
46
47 //#pragma pack()
48
49 #pragma pack(pop)
50
51
52
53 int main()
54 {
55     cout << sizeof(A) << endl;
56
57     return 0;
58 }

对齐时:

屏蔽代码时:

转载于:https://www.cnblogs.com/1228073191Blog/p/7452276.html

基础 - #pragma pack (n) 设置对齐方式相关推荐

  1. #pragma pack的作用

    #pragma pack 当#pragma pack指定的值等于或者超过所有数据成员长度的时候,这个指定值的大小将不产生任何效果: 一句话: 如果是1的话表示紧凑存放,除了char,bool,每个都要 ...

  2. pragma pack(1) and #pragma pack(push,1)

    作用:调整结构体的边界对齐,让其以一个字节对齐: #pragma pack(1) 使结构体按1字节方式对齐例如:struct sample{char a;double b;};若不用#pragma p ...

  3. 关于pragma pack的用法(一)

    一个很重要的参数 #pragma pack(n) 数据边界对齐方式: 以如下结构为例: struct {                     char a;                     ...

  4. #pragma pack(push,1)与#pragma pack(1)的区别

    这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对 ...

  5. #Pragma Pack(n)与内存分配 pragma pack(push,1)与#pragma pack(1)的区别

    from:http://blog.csdn.net/mylinx/article/details/7007309 #pragma pack(n) 解释一: 每个特定平台上的编译器都有自己的默认&quo ...

  6. #pragma pack(push,1)与#pragma pack(1)的区别(转)

    这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对 ...

  7. 【编译制导指令】#pragma pack - 字节数基准对齐

    #pragma pack(1) struct {char c;int i; }S; int main() {cout<<sizeof(S)<<endl; } 那么,结果为: $ ...

  8. #pragma pack (n) 惹的祸

    今天遇到了一个问题,使用数据流传输的数据在解析的时候数据错位.想了非常久,发现是#pragma pack (n)惹的祸. 首先.解析方使用了编译字节设置,可是在发送方没有使用,于是用相同的结构体解析数 ...

  9. #pragma pack 用法详解

    #pragma pack 用法详解 pack为struct.union和class等的成员对齐指定字节边界,与编译选项(属性 -> 配置属性 -> C/C++ ->代码生成 -> ...

最新文章

  1. C博客作业01--分支、顺序结构
  2. 人人可以理解的区块链100问——比特币可以用于支付吗?
  3. Vimium插件让键盘党像操作Vim一样操作Chrome
  4. C# DES加密类,16位的加密。
  5. 计算机应用用英语,计算机应用常用英语:“windows”
  6. 详解:Salesforce元数据支撑SASS架构设计
  7. LWN:关于preempt_count()的四个小讨论!
  8. 自定义鼠标指针图案每次开机或者重启都会重置的解决办法
  9. www.ty66.php,韬轩阁
  10. 2012/5/9武汉佰钧成
  11. 网店卖什么产品最好卖?
  12. Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法
  13. 考研后悔排行榜大盘点!这些雷要尽早避开!
  14. Leetcode501. Morris中序遍历
  15. ctf write cookies欺骗
  16. [info]关于「烧杯」这个APP
  17. Unity MegaFiers导入(pc2)格式缓存动画失败出现错误
  18. ORB-SLAM2源码笔记(1)——框架结构
  19. 完全 彻底 删除 百度云管家
  20. JS文件位置对浏览器的影响

热门文章

  1. fastjson 添加key value_Redis中设置了过期时间的Key,那么你还要知道些什么?
  2. 哪个厂家的监控平台用的云服务器_哪个品牌的云服务器最好用?
  3. project 模板_18个施工进度计划横道图模板,自动出图超方便,全部在这儿给你准好了...
  4. matlab2011实验3,matlab实验3探索.doc
  5. 华为的Java虚拟机_华为方舟编译器解析:提升安卓运行效率
  6. Android 机型适配之gradient默认渐变方向
  7. StratifiedShuffleSplit 交叉验证
  8. TCP/IP 详解卷一 - TCP CWR、ECE、URG、ACK、PSH、RST、SYN、FIN控制位
  9. 【teradata】强制解锁
  10. Python 中的 sys.argv 用法