typedef _W64 unsigned int UINT_PTR,* PUINT_PTR;

时间:2009-11-23 15:17:38

标签: c++

这究竟是什么意思?

typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

这是否意味着* PUINT_PTR是指针(显然)而UINT_PTR不是指针?如果是这样,为什么叫它UINT_PTR? (我将其读作unsigned int指针,或指向unsigned int的指针)

由于

1 个答案:

答案 0 :(得分:7)

是的,这意味着PUINT_PTR是指针而UINT_PTR不是指针。这有点令人困惑,但是UINT_PTR(以及更标准化的uintptr_t)被定义为无符号整数,保证足够大以容纳指针值。它通常用于棘手的代码,其中指针被放入整数值,反之亦然。

_W64注释是Miscrosoft编译器的一个注释,在编译64位目标时,该变量应该是64位宽而不是通常的32位,因为在64位平台上,指针是64位位,但unsigned int s通常仍为32位。这可确保sizeof(UINT_PTR) >= sizeof(void*)适用于所有目标平台。

第二个声明只声明PUINT_PTR是指向_W64 unsigned int的指针,或者更具体地说是指向UINT_PTR的指针。