美文网首页代码
#pragma pack&pop

#pragma pack&pop

作者: JetLu | 来源:发表于2015-07-26 18:45 被阅读283次


这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。

#pragma pack(n)

作用:C编译器将按照n个字节对齐。

#pragma pack()

作用:取消自定义字节对齐方式。

#pragma pack(push, 1)

作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为一个字节对齐

#pragma pack(pop)

作用:恢复对齐状态

因此可见,加入push和pop可以使对齐恢复到原来状态,而不是编译器默认,可以说后者更优,但是很多时候两者差别不大

例:

#include <iostream>
#include <string>
using namespace std;

#pragma pack(push, 1)
struct A {
    char a;
    int  b;
};
#pragma pack(pop)

struct B {
    char a;
    int  b;
};

int main() {
    cout << sizeof(A) << sizeof(B);
    //58
    return 0;
}

A不用#pragma pack(push, 1)#pragma pack(pop)括起来,则输出88

相关文章

  • #pragma pack&pop

    转这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。 ...

  • XCode强制去除警告

    push和pop之间为忽略的范围,如果不写就是从#pragma clang diagnostic ignored ...

  • 24_#pragma使用分析【重点】

    关键词:#pragma简介、#pragma message、#pragma one、 内存对齐、#pragma p...

  • C语言day05-10递归练习02

    pragma mark 递归练习02 pragma mark 概念 pragma mark 代码 pragma m...

  • #pragma

    1.注释 消除编译警告 各种警告

  • #pragma

    #pragma声明主要由Xcode用来完成两个主要任务——整理代码和防止编译器警告。 整理代码 代码的整洁程度反映...

  • #pragma

    整理代码 在 @implementation 中使用 #pragma mark 来将代码分割成逻辑区块。Xcode...

  • Pragma

    在做注释特别是分段注释时,经常会用到 #pargam mark-但#pargma 另一个强大功能就是处理编译器警...

  • #pragma

    开门见山 pragam 声明在Xcode中主要起两个作用:整理代码和处理编译器警告 整理代码 我们经常通过 #pr...

  • C语言day06-12类型说明符

    pragma mark 类型说明符 pragma mark 概念 pragma mark 代码 #pragma m...

网友评论

    本文标题:#pragma pack&pop

    本文链接:https://www.haomeiwen.com/subject/rrjmqttx.html