zoukankan      html  css  js  c++  java
  • 理解 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



    =============================================================================================
  • 相关阅读:
    Thinkpad R400无线网络一个都不见了!
    如果使用安卓4.4的SD卡?
    如何使用安卓4.4的SD卡?
    在IAR使用FreeRTOS出现Error[Pa045]: function "XXX" has no prototype
    DSP5509的RTC实验-第3篇
    LWM2M简介-学习记录
    DSP5509的定时器实验-第2篇
    DSP5509的XF实验-第一篇
    华为LiteOS系统使用-任务调度函数-第一篇
    2017-12-24自选的股票之春秋航空
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436650.html
Copyright © 2011-2022 走看看