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

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

理解 LARGE_INTEGER的定义的更多相关文章

  1. 深入理解javascript函数定义与函数作用域

    最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...

  2. 深入理解UE4宏定义—— GENERATED_BODY

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/72834164 作者:car ...

  3. C#开发微信门户及应用(31)--微信语义理解接口的实现和处理

    微信语义理解接口提供从用户自然语言输入到结构化解析的技术实现,使用先进的自然语言处理技术给开发者提供一站式的语义解析方案.该平台覆盖多个垂直领域的语义场景,部分领域还可以支持取得最终的展示结果.开发者 ...

  4. 理解JAVASCRIPT 闭包

    最近去面试了一家企业,结果非常灰心丧气,于是周末给自己定了一个目标 学好一门,学精通一门.不求多,只求懂. 最近看到一个概念“闭包”. 什么是闭包呢? 简单一点就是:看得到多和看得到少的区别. 上面这 ...

  5. 理解java虚拟机内存分配堆,栈和方法区

    栈:存放局部变量 堆:存放new出来的对象 方法区:存放类的信息,static变量,常量池(字符串常量) 在堆中,可以说是堆的一部分   创建了一个student类,定义了name属性, id静态变量 ...

  6. ABAP工作区,内表,标题行的定义和区别

         工作区域跟变量一样,是用来保存数据的.区别是变量只能从中保存一个数据.而工作区域可以存放多个.把多个数据合在一起就成工作区域了.下面我们来看看工作区域是如何定义的吧.定义有四种方法,如下:1 ...

  7. 关于javascript中闭包的理解

    闭包就是能够读取其他函数内部变量的函数. 在javascript中,只有函数内部的子函数可以读取局部变量,因此,我理解闭包就是定义在一个函数内部的函数. 例子: var f1 = function() ...

  8. java提高篇之理解java的三大特性——多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  9. java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

随机推荐

  1. 乐搏讲自动化测试-Python发展背景(1)

    相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...

  2. CentOS 7 配置 Nginx 正向代理 http、https 最详解

    手头项目中有使用到 nginx,因为使用的三方云服务器,想上外网需要购买外网IP的,可是有些需要用到外网却不常用的主机也挂个外网IP有点浪费了,便想使用nginx的反向代理来实现多台内网服务器使用一台 ...

  3. loadrunner乱码解决

    对于Virtual User Generator,本机编码方式为GB2312,GBK,GB18030,因此要修改为utf-8 1.录制过程产生的乱码解决方法: 在tool→recording opti ...

  4. 模拟 HDOJ 4552 Running Rabbits

    题目传送门 /* 模拟:看懂题意,主要是碰壁后的转向,笔误2次 */ #include <cstdio> #include <algorithm> #include <c ...

  5. 25 C#类的继承

    继承是面向对象编程的一个重要特性.任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员.在OOP 中,被继承的类称为父类(也称为基类).注意,C#中的对象仅能直接派生于一个基类,当然 ...

  6. [ CERC 2014 ] Vocabulary

    \(\\\) \(Description\) 给出三个长度分别为 \(lenA,lenB,lenC\) 的三个字符串 \(A,B,C\) ,其中字符集只包括所有小写字母以及 \(?\) 号. 现在将所 ...

  7. dive into python:模块的导入和搜索文件路径的配置

    1.Python中导入模块:import sys:相当于Java中的导入包.类. 比如,我们导入sys模块,使用:import sys; 2.Python中调用函数的时候,会从默认配置的库文件夹中(s ...

  8. jstree的基本应用----记录

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. 梦想CAD控件图层COM接口知识点

    梦想CAD控件图层COM接口知识点 一.新建图层 主要用到函数说明: _DMxDrawX::AddLayer 增加新的图层.详细说明如下: 参数 说明 BSTR pszName 图层名 c#中实现代码 ...

  10. ERROR: Field 'PostId' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement

    例子: Post p = new Post(); p.setPostId(3); p.setPostName("技术"); 在执行数据保持时提示session.save(p); 的 ...