为什么这个结构的大小不正确

man*_*ans 2 c++ struct sizeof

我有这个示例代码,我用pack装饰,以确保其大小为5字节(4为int,1为char).

但它打印出struct的大小是8字节.

#pragma pack push
#pragma pack 1
struct mystruct
{
    int x;
    char y;
};
#pragma pack pop

//static_assert(sizeof(mystruct) == 5, "Size of mystruct should be 5 byte.");

int _tmain(int argc, _TCHAR* argv[])
{
    int x=sizeof(mystruct);
    printf("size of struct is %d\n",x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么te pck不工作?

如何确保struct的大小始终为5.

n. *_* m. 7

你的pragma语法错了.

试试这个:

#pragma pack(push,1)
...
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)

演示.