当前位置: 动力学知识库 > 问答 > 编程问答 >

c++ - Locally disable padding

问题描述:

I write a parser for some data structure, after hours of debugging I found out that the problem is Visual Studio doesn't interpret the structures as I tell it. It seems some "padding" is used

struct foo {

unsigned char a; //0x00

unsigned char b; //0x01

unsigned int c; //0x02

unsigned int d; //0x06

unsigned int e; //0x0A

unsigned int f; //0x0E

//0x12

};

I expected "sizeof(foo)=4*4+2=18" but I get "sizeof(foo)=20". Is there any possibility to turn padding off just for this special struct? I tried

__declspec(align(1)) struct foo { ...

but it does not work. Thank you for your help.

网友答案:

Use the #pragma pack directive for that:

#pragma pack(push, 1)
struct foo { 
  // etc..
};
#pragma pack(pop)
网友答案:

Visual Studio 2010 has #pragma pack to do what you're looking for.

分享给朋友:
您可能感兴趣的文章:
随机阅读: