打包对齐值和32/64位平台

时间:2017-02-11 03:51:41

标签: c++ memory memory-management memory-alignment

假设我在一台32位计算机上,我有这个定义:

#pragma pack(push,2)
typedef struct tagBITMAPFILEHEADER {
    WORD    bfType;
    DWORD   bfSize;
    WORD    bfReserved1;
    WORD    bfReserved2;
    DWORD   bfOffBits;
} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
#pragma pack(pop)

我将使用此结构的大小以及其他结构的大小:

bitmap_file_header->bfSize = sizeof(BITMAPINFOHEADER)+sizeof(BITMAPFILEHEADER)

正如您所看到的,我期待结构的大小。是我使用#pragma pack(push,2)

的数据的总大小

如果我想使这个64位兼容,我不知道这两种情况将如何相关。

我在任何平台上的目标是:获取结构成员的总大小。

我的问题:这段代码是否会像我瞄准的那样适用于64位,如果不是正确的解决方案呢?

0 个答案:

没有答案