相关疑难解决方法(0)

无法理解LARGE_INTEGER结构

使用C++和一些Winapi的东西,我遇到了这个人:

#if defined(MIDL_PASS)
typedef struct _LARGE_INTEGER {
#else // MIDL_PASS
typedef union _LARGE_INTEGER {
    struct {
        DWORD LowPart;
        LONG HighPart;
    };
    struct {
        DWORD LowPart;
        LONG HighPart;
    } u;
#endif //MIDL_PASS
    LONGLONG QuadPart;
} LARGE_INTEGER;
Run Code Online (Sandbox Code Playgroud)

所以,我看到它的方式,取决于MIDL_PASS的设置与否,这是一个非常紧凑的结构,只有一个LONGLONG,或更有趣的情况,这成为一个联合.

如果这是一个联合,我仍然有意义,有两个可能的访问权限,一个LONGLONG在一个块中,一个结构有Low和Highpart.到现在为止还挺好.

但我无法理解结构被声明两次,相同的事实.它们似乎都是匿名的,但后者可以通过"u"获得.

现在问我的问题:

为什么两个结构被定义(冗余?),第一个结构的目的是什么,如果我甚至无法访问它,由于没有绑定到任何类型/变量名称.

c++ winapi data-structures

21
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

data-structures ×1

winapi ×1