在本网站上:Windows Data Types
出现了这个话题的问题。
LP代表我认为的长指针 - 但是不久之后。 UINT_PTR代表我再次设定的无符号int指针 - 但是没有指针。
有人知道这个的背景吗?
答案 0 :(得分:8)
参考" 长指针" (LP
- 类型):强>
你有long and short pointers的地方(奔腾前)。由于WINAPI在这些时间已经存在,而且今天仍然试图与那些日子的代码保持兼容,LPsomething
- 类型幸免于难。
参考UINT_PTR
:
这是一个足以容纳指针值的整数。 C11-Standard定义了如下类型:
7.20.1.4能够保存对象指针的整数类型
1以下类型指定带有任何有效属性的有符号整数类型 指向void的指针可以转换为这种类型,然后转换回指向void的指针, 并且结果将与原始指针进行比较:
intptr_t
以下类型指定无符号整数类型,其属性为any 指向void的指针可以转换为这种类型,然后转换回指向void的指针, 并且结果将与原始指针进行比较:
uintptr_t
这些类型是可选的。
答案 1 :(得分:5)
UINT_PTR
不是指针类型。它是一个足够宽度的无符号整数类型,用于存储指针值(因此其宽度取决于目标平台)。它的存在是因为int
和unsigned int
不一定足够宽以容纳指针(特别是在x64的Windows上,其中int
仍为32位且指针为64位)。