C++中使用typedef定义的UNIT_PTR,LONG_PTR等

在看代码时,发现有用到WPARAM, LPARAM, LRESULT

我去找它们的定义,发现在C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\minwindef.h 中,有如下定义

/* Types use for passing & returning polymorphic values */
typedef UINT_PTR            WPARAM;
typedef LONG_PTR            LPARAM;
typedef LONG_PTR            LRESULT;

我于是又去看UINT_PTR, LONG_PTR, LONG_PTR的定义

发现在C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\basetsd.h中有如下代码

    typedef _W64 int INT_PTR, *PINT_PTR;
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

    typedef _W64 long LONG_PTR, *PLONG_PTR;
    typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

我们来理解上面4行语句,上面4行语句基本上是一个样式. 我们只需要理解其中一行就可以了。我们拿第一行来举例:

typedef _W64 int INT_PTR, *PINT_PTR;  
这里 _W64是编译选项,在64位编译器下, ,而且打开了/Wp64编译选项时,编译器会对使用了__w64的类型进行32位到64位移植性的判断 => 具体好像也不是很懂...
我们重点看这个:
typedef int INT_PTR, *PINT_PTR;  分为2句:
typedef int INT_PTR => 这里就是为int类型取了一个别名 INT_PTR, 所以这里 INT_PTR就是代表int =》使用 INT_PTR b; b =1;
typedef int *PINT_PTR => 就是为int *,也就是int类型的指针,取了一个别名 PINT_PTR, 所以,这里PINT_PTR就是代表int类型的指针 => 使用 int x = 8; PINT_PTR y = &x;

 

posted on   新西兰程序员  阅读(237)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2018-07-05 Umbraco安装过程中出现的问题以及调试
2016-07-05 Umbraco中的权限体系结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示