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



    =============================================================================================
  • 相关阅读:
    快速了解MongoDB
    如何在 Ubuntu 上安装 MongoDB
    Python操作MongoDB文档数据库
    C# Convert.ToDouble 在不同的区域下的问题
    Visual Studio 调试C#程序时,提示“无法加载程序集****.XmlSerializers.dll",文件找不到 的问题
    C# 调用打印机打印文件
    C# 获取所有可用的打印机
    记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
    SQL 分组后只获取每组的一条数据
    记录一次使用NPOI遇到的问题
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436650.html
Copyright © 2011-2022 走看看