VC编译奇怪问题,请高手解释一下,疑是VC的bug
代码如下:
#include <stdio.h>
#pragma pack(4)
typedef struct
{
char a[10];
int b;
char c;
}DevFont_Infor;
main()
{
DevFont_Infor font;
int add1 = &(font.b);
int add2 = &font;
printf("add1-add2=%d\n", add1-add2);
printf("&(font.b)-&font=%d\n", &(font.b)-&font);
}
打印出来的结果是:
1. 当定义 #pragma pack(4)时:
add1-add2=12
&(font.b)-&font=3
1. 当定义 #pragma pack(1)时:
add1-add2=12
&(font.b)-&font=2
对结果我觉得很奇怪,哪位有研究过这个问题,讲讲其中的奥妙;
有其他编译器的同仁帮忙试试看在其他编译器上的结果如何。