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



    =============================================================================================
  • 相关阅读:
    3、Ubantu下安装nginx
    2、关于mongodb外部访问不成功的问题
    1. libcurl.so.4: cannot open shared object file: No such file or directory
    Php 笔记
    Jade之Plain Text
    Jade之Mixins
    Jade之Interpolation
    Jade之Template Inheritance
    Jade之Includes
    Jade之Filters
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436650.html
Copyright © 2011-2022 走看看