#include<vector>
#include<iostream>
#include<stdio.h>
struct student {
char c;
int age;
}__attribute__((packed));
//win32 系统中 codeblock 运行结果:为8,char和int换位置后结果为:5
#pragma pack(push, 1)
struct student1 {
char c;
int age;
};
#pragma pack(pop)
//无论哪个平台结果都是5
int main() {
student st;
student1 st1;
std::cout << sizeof(st) << std::endl;
std::cout << sizeof(st1) << std::endl;
return 0;
}
在student结构体中,如果在结构体后面加__attribute__((packed)),char在int前和后,sizeof()计算出来的是不一样的,具体原因不清楚,暂时先记下来。但是如果是加 #pragma pack(push,1) 和 pragma pack(pop)就不会出现这个问题。