社区
C++ 语言
帖子详情
ULONG_PTR到底是什么意思
cdj8887
2011-01-15 03:05:58
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
ULONG_PTR 我知道他就是无符号long, 而 PULONG_PTR 才是无符号long类型的指针,那既然ULONG_PTR不是指针那为什么加上一个PTR?,PTR 不是pointer的缩写吗?微软加了一个_PTR 到底是何含义呀?
...全文
740
8
打赏
收藏
ULONG_PTR到底是什么意思
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR; ULONG_PTR 我知道他就是无符号long, 而 PULONG_PTR 才是无符号long类型的指针,那既然ULONG_PTR不是指针那为什么加上一个PTR?,PTR 不是pointer的缩写吗?微软加了一个_PTR 到底是何含义呀?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
珍惜生命远离CPP
2011-01-17
打赏
举报
回复
[Quote=引用 6 楼 cdj8887 的回复:]
有没有知道的呀,
[/Quote]
看1楼,已经很明确的解释了
cdj8887
2011-01-17
打赏
举报
回复
有没有知道的呀,
cdj8887
2011-01-17
打赏
举报
回复
既然微软定义了这个东西,就一定有他的意思,我觉得明白了他存在的意义,就一定会更好的应用,才不会写出糟烂的代码
arong1234
2011-01-17
打赏
举报
回复
这叫盲目崇拜[Quote=引用 5 楼 cdj8887 的回复:]
既然微软定义了这个东西,就一定有他的意思,我觉得明白了他存在的意义,就一定会更好的应用,才不会写出糟烂的代码
[/Quote]
feng4206yu
2011-01-15
打赏
举报
回复
指针变量本来就跟普通变量一样具有存储宽度,win32上是4个字节,win64是就是8个字节,这没什么难理解的.
arong1234
2011-01-15
打赏
举报
回复
我觉得既然你知道定义就知道是什么了,这个定义显然不是一个指针,很显然写这个代码的人定义宏的时候名字不是很好。有时候即使是微软的程序员定义名字也不一定合理,何必一定要找合理性解释?[Quote=引用楼主 cdj8887 的回复:]
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
ULONG_PTR 我知道他就是无符号long, 而 PULONG_PTR 才是无符号long类型的指针,那既然ULONG_PTR不是指针那为什么加上一个PTR?,PTR 不是pointer的缩写吗?微软加了一个_PTR 到底是何含义呀?
[/Quote]
人到中年琐事多
2011-01-15
打赏
举报
回复
好象GDI+初始化的时候有它,微软就是喜欢用typedef和#define把一个人起多个名字,搞得头晕
bruceteen
2011-01-15
打赏
举报
回复
MSDN是这么放的:Unsigned long type for pointer precision. Use when casting a pointer to a long type to perform pointer arithmetic. (Also commonly used for general 32-bit parameters that have been extended to 64 bits in 64-bit Windows. )
这个_PTR并不是说ULONG_PTR是个pointer,而是说它具有pointer的宽度
M$的命名都是很变态的说
vc6.0的扩展文件 part2
很多人在用vc6.0编译某些程序时总是出现错误。大多数情况可能是在使用directx8.0或者更新的版本时出现的,比如: d:\microsoft directx sdk (august 2008)\include\dsound.h(305) : error C2146: syntax error : missing ';' before identifier 'dwReserved1' d:\microsoft directx sdk (august 2008)\include\dsound.h(305) : error C2501: 'DWORD_
PTR
' : missing storage-class or type specifiers 等 实际上,就是因为dsound.h中使用了DWORD_
PTR
,而实际上没有此关键字的定义,所以在编译时出现了大量的错误。一些人建议自已定义此关键字: typedef U
LONG
DWORD_
PTR
实际上,这不是一种好的解决方案,因为除了这一个定义,可能还有很多其它的定义,也就是一系列的定义都需要你一个一个去做 经过对比,发现vc98/include/中的basetsd.h中没有DWORD_
PTR
的定义,但扩展的文件中的basetsd.h中却有定义,所以使用本文件把vc98/下的include和lib两个目录覆盖掉即可解决这些编译问题 由于无法上传大于10M的文件,所以分成了两部分
Windows Media Player 控件 For BCB
Windows Media Player 控件 For BCB,解决了 E2015 Ambiguity between 'U
LONG
_
PTR
' and 'Wmplib_tlb::U
LONG
_
PTR
' 的错误,可以安装在BCB6下,已经测试通过。里面有WMP.bpk,可以安装。
U
LONG
_
PTR
的作用
U
LONG
_
PTR
就是能够装得下指针的无符号整数,在32位被定义成unsigned
long
,在64位被定义成unsigned __int64,w64是如果是64位则警告。所以,U
LONG
_
PTR
就是 unsigned
long
*,GDI+中好像就是这么定义的。指针不支持比较大小,将指针转换成U
LONG
_
PTR
类型,可以比较大小。从U
LONG
_
PTR
本身来看,应该是一个无符号
long
型指针。在进行指针的整数运算时可以用U
LONG
_
PTR
作类型转换。
windows编程中U
LONG
_
PTR
和指针的互相转换
【代码】windows编程中U
LONG
_
PTR
和指针的互相转换。
E2015 Ambiguity between 'U
LONG
_
PTR
' and 'Wmplib_tlb::U
LONG
_
PTR
' 这个错误怎么解决?终极解决办法
BCB编译时出现:E2015 Ambiguity between 'U
LONG
_
PTR
' and 'Wmplib_tlb::U
LONG
_
PTR
' 这个错误怎么解决?终极解决办法,关于Wmplib_tlb中的U
LONG
_
PTR
终极解决办法: 把Wmplib_tlb文件里面的所有U
LONG
_
PTR
搜索改为U
LONG
_
PTR
_2, 然后第559行,改为: typede
C++ 语言
65,197
社区成员
250,524
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章