gpt4 book ai didi

c++ - LARGE_INTEGER 和 DUMMYSTRUCTNAME

转载 作者:太空狗 更新时间:2023-10-29 21:33:05 25 4
gpt4 key购买 nike

当我遇到 LARGE_INTEGER 的定义时。我发现了一些问题:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;

我们能否重写如下:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
LONGLONG QuadPart;
} LARGE_INTEGER;

我认为结构 u 是重复的。那么为什么 MSVC 会这样实现 LARGE_INTEGER 呢?我想知道可能是出于某种原因,例如兼容性。

最佳答案

这显然是一种调整,以避免在 union 中使用匿名结构。这已被 Visual C++ 支持,但语言标准不允许。 (有关不带 DUMMYSTRUCTNAME 的结构声明,请参阅 can't make sense of LARGE_INTEGER struct。)可能会使用某种自动化工具来添加该名称以使 union 符合标准 C++。

Later versions LARGE_INTEGER 完全摆脱了结构,只有 QuadPart

关于c++ - LARGE_INTEGER 和 DUMMYSTRUCTNAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com