zoukankan      html  css  js  c++  java
  • 基础

     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 }

    对齐时:

    屏蔽代码时:

  • 相关阅读:
    域控软件分发
    win2008 ad域控搭建
    tomcat部署web项目的三种方式
    sql server2008数据库迁移的两种方案
    WinServer2008R2远程桌面长时间保持连接
    Windows2012R2备用域控搭建
    主备 主从 主主模式
    excel中汉字转拼音
    正向代理与反向代理
    18-09-11 软件rpm yum rm卸载 和批量删除
  • 原文地址:https://www.cnblogs.com/1228073191Blog/p/7452276.html
Copyright © 2011-2022 走看看