【发布时间】:2018-10-10 03:26:51
【问题描述】:
当我遇到 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;
我认为 struct u 是重复的。那么为什么 MSVC 像这样实现 LARGE_INTEGER 呢?我想知道也许是兼容性之类的原因。
【问题讨论】:
-
最佳猜测。
LARGE_INTEGER一直存在于 Windows SDK 中。他们可能需要u部分,以便在一个非常旧的编译器版本上编译为“C”代码,该版本预计在当时是命名类型。
标签: c++