理解 LARGE_INTEGER的定义


http://bbs.csdn.net/topics/310239341


#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;

怎么理解这个定义  ?

=============================================================================================

#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; 

假如定义了MIDL_PASS 

// 如果编译器直接支持64位整数可以直接使用QuadPart(64位)  
typedef struct _LARGE_INTEGER {
    LONGLONG QuadPart;
} LARGE_INTEGER; 


没有定义MIDL_PASS
typedef union _LARGE_INTEGER {
    struct {
        DWORD LowPart;
        LONG HighPart;
    };
    struct {
        DWORD LowPart;
        LONG HighPart;
    } u;
    LONGLONG QuadPart;
} LARGE_INTEGER; 


下面说一下这个结构的作用

如果你有编译器直接支持64位整数可以直接使用QuadPart(64位),

否则分别对LowPart(32位)和HighPart(32位)存取,HighPart的最高位为符号位。  
   
  表示数的范围:--3689348814741910324到+4611686018427387903   



=============================================================================================

=============================================================================================
还是有点不明白的是
   struct {
        DWORD LowPart;
        LONG HighPart;
    };//这个是类型声明 好像不合语法
    struct {
        DWORD LowPart;
        LONG HighPart;
    } u; //这里定义变量 也好像不和语法 
   有这样声明和定义的吗?谁来解释下

=============================================================================================
struct {
        DWORD LowPart;
        LONG HighPart;
    };//声明了一个无名结构


struct {
        DWORD LowPart;
        LONG HighPart;
    }
 u//这里用刚才的无名结构定义了一个结构变量 u



============ ================== ================== ================== ================== =========

转载于:https://www.cnblogs.com/roger0212/p/4436650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值