Re: 关于_LARGE_INTEGER 结构

Windows内核调试

关于_LARGE_INTEGER 结构


skyworth 2008-11-26, 19:22 下午
微软的声明如下:
typedef union _LARGE_INTEGER
{
struct
{
DWORD LowPart;
LONG HighPart;
};
struct
{
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;

比较奇怪的是里面有两个相同的结构声明,为什么呢?
网上搜了一下,貌似也没什么结果,要么打不开,要么就是什么"the author does not care portablity at all"之类的批评,却没有解释原因……

Re: 关于_LARGE_INTEGER 结构


格蠹老雷 2008-11-26, 21:15 下午
这样就可以使用下面两种方法中的任一种来引用LowPart和HighPart:
LARGE_INTEGER li
li.u.LowPart
或者
li.LowPart
标准C不支持未命名的结构,所以习惯C语法的人会喜欢前一种用法;C++支持未命名结构,所以C++ FANS会觉得第一种方法累赘。上面的定义满足了两种人的编程习惯:-)

Re: 关于_LARGE_INTEGER 结构


MJ0011 2008-11-26, 21:16 下午
联合

Re: 关于_LARGE_INTEGER 结构


pch 2008-11-26, 22:05 下午
原来这样

Re: 关于_LARGE_INTEGER 结构


skyworth 2008-12-03, 18:52 下午
有道理,貌似用微软的编译器编译成C代码可以通过,待会儿试试别的编译器看看能不能通过。

Re: 关于_LARGE_INTEGER 结构


Da Vinci 2008-12-08, 13:28 下午
注意有个u. 其实是不同的

Powered by Community Server Powered by CnForums.Net