C++ LPCSTR没有';长';而UINT_PTR没有指针?
在本网站上: 这个话题的问题出现了 我猜LP代表长指针,但没有长指针。 UINT_PTR代表无符号int指针,我再次假定,但这里没有指针 有人知道这件事的背景吗?指的是“长指针”(C++ LPCSTR没有';长';而UINT_PTR没有指针?,c++,c,pointers,msdn,C++,C,Pointers,Msdn,在本网站上: 这个话题的问题出现了 我猜LP代表长指针,但没有长指针。 UINT_PTR代表无符号int指针,我再次假定,但这里没有指针 有人知道这件事的背景吗?指的是“长指针”(LP-types): 在奔腾时代之前,你有过这样的经历。由于WINAPI在那段时间已经存在,而且今天仍然试图与当时的代码保持兼容,LPsomething-类型仍然存在 参考UINT\u PTR: 这是一个足够宽的整数,可以容纳指针的值。C11标准对此类类型的定义如下: 7.20.1.4能够容纳对象指针的整数类型 1以下
LP
-types):
在奔腾时代之前,你有过这样的经历。由于WINAPI在那段时间已经存在,而且今天仍然试图与当时的代码保持兼容,LPsomething
-类型仍然存在
参考UINT\u PTR
:
这是一个足够宽的整数,可以容纳指针的值。C11标准对此类类型的定义如下:
7.20.1.4能够容纳对象指针的整数类型
1以下类型使用任何有效的
指向void的指针可以转换为此类型,然后再转换回指向void的指针,
结果将与原始指针进行比较:
intptr_t
uintptr_t
以下类型使用任何有效的属性指定无符号整数类型
指向void的指针可以转换为此类型,然后再转换回指向void的指针,
结果将与原始指针进行比较:
intptr_t
uintptr_t
这些类型是可选的
引用“长指针”(LP
-类型):
在奔腾时代之前,你有过这样的经历。由于WINAPI在那段时间已经存在,而且今天仍然试图与当时的代码保持兼容,LPsomething
-类型仍然存在
参考UINT\u PTR
:
这是一个足够宽的整数,可以容纳指针的值。C11标准对此类类型的定义如下:
7.20.1.4能够容纳对象指针的整数类型
1以下类型使用任何有效的
指向void的指针可以转换为此类型,然后再转换回指向void的指针,
结果将与原始指针进行比较:
intptr_t
uintptr_t
以下类型使用任何有效的属性指定无符号整数类型
指向void的指针可以转换为此类型,然后再转换回指向void的指针,
结果将与原始指针进行比较:
intptr_t
uintptr_t
这些类型是可选的
UINT\u PTR
不是指针类型。它是一种无符号整数类型,其宽度足以存储指针值(因此其宽度取决于目标平台)。它的存在是因为int
和unsigned int
的宽度不一定足以容纳指针(特别是在x64的Windows上,int
仍然是32位,指针是64位)。UINT\u PTR
不是指针类型。它是一种无符号整数类型,其宽度足以存储指针值(因此其宽度取决于目标平台)。它的存在是因为int
和unsigned int
的宽度不一定足够容纳指针(特别是在x64的Windows上,int
仍然是32位,指针是64位)。你的问题是矛盾的。你的问题是矛盾的。长指针来自16位的日子,当你有段:偏移内存寻址。长指针(也称为远指针)包括段和偏移量。近指针仅将偏移包含在段中。这纯粹是英特尔x86体系结构的产物。长指针来自16位时代,那时您有段:偏移内存寻址。长指针(也称为远指针)包括段和偏移量。近指针仅将偏移包含在段中。这纯粹是一种英特尔x86体系结构的东西。不仅在x64上int是32位的。在某些平台上,虽然平台有64位整数(LLP64系统),但长度仍然是32位,但这取决于编译器/系统,而不是CPU。请参见同一平台上的Linux与MS Windows。不仅在x64上int为32位。在某些平台上,虽然平台有64位整数(LLP64系统),但长度仍然是32位,但这取决于编译器/系统,而不是CPU。参见同一平台上的Linux与MS Windows。