• 理解 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



    =============================================================================================
  • 相关阅读:
    安卓远程工具介绍及下载地址
    kylinos-kysec介绍
    远程控制工具ToDesk介绍
    kylinos桌面和服务器系统重置密码
    APT仓库目录和repository目录结构
    使用LVM实现动态磁盘管理
    如何实现访问http自动跳转https
    TypeScript学习 ———— 四、泛型
    TypeScript学习 ———— 三、function
    TypeScript学习 ———— 二、接口
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436650.html
Copyright © 2020-2023  润新知