#include
#pragma pack(8)
struct TestStruct4
{
char a;
long b;
};
struct TestStruct5
{
char c;
struct TestStruct4 d;
long long e;
};
#pragma pack()
void main()
{
struct TestStruct4 f;
struct TestStruct5 j;
printf("%d\n", sizeof(f));
printf("%d\n", sizeof(j));
}
看了一本书上这个程序的运算结果是8、24,我自己感觉也是8、24,在ubuntu下运行了一下,结果是8、20,难道是编译器的问题??求大侠解释一下
要看一下不同平台的缺省字节对其长度,可能不一样。
是按照不同的系统导致,32位和64位就差了4个字节某些数据类型