BITMAPFILEHEADER
的大小应该为14个字节,但是当我运行代码时,我得到16个字节。我以为是由于填充的原因,所以我添加了__attribute__((packed))
,但我仍然得到16个字节。为什么?
#include<stdint.h>
#include <stdio.h>
#include <stdlib.h>
typedef uint8_t BYTE;
typedef uint32_t DWORD;
typedef int32_t LONG;
typedef uint16_t WORD;
typedef struct
{
WORD bfType;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfSize;
DWORD bfOffBits;
} __attribute__((packed))
BITMAPFILEHEADER;
int main(void){
printf(" %i \n",sizeof(BITMAPFILEHEADER));
return 0;
}
答案 0 :(得分:2)
在GCC 4.8.1中报告了关于同一问题的错误。
attribute((packed)) does not pack struct containing uint16_t with uint32_t
有关错误报告的评论指出:
(属性((打包))在mingw32目标上不起作用,因为ms-bitfields成为默认位)。