这究竟是什么意思?
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
Run Code Online (Sandbox Code Playgroud)
这是否意味着*PUINT_PTR是指针(显然)而UINT_PTR不是指针?如果是这样,为什么叫它UINT_PTR?(我将其读作unsigned int指针,或指向unsigned int的指针)
谢谢
是的,这意味着它PUINT_PTR是一个指针,UINT_PTR而不是一个指针.这有点令人困惑,但a UINT_PTR(以及更标准化的uintptr_t)被定义为无符号整数,保证足够大以容纳指针值.它通常用于棘手的代码,其中指针被放入整数值,反之亦然.
的_W64注释是音符到Miscrosoft编译器编译为一个64位的目标的情况下,变量应为64位,而不是通常32宽,因为在64位的平台,指针是64位,但unsigned intS键通常仍然是32位.这确保sizeof(UINT_PTR) >= sizeof(void*)了所有目标平台.
第二个声明只是声明PUINT_PTR是指向a的指针_W64 unsigned int,或者更具体地说是指向a的指针UINT_PTR.