![]() |
1
2
此宏的结果将是指向值等于给定参数的长字符串的指针。可以通过读取预编译器输出(参见/p+C++编译器选项)来查看它。在win32和x64配置中,当需要lp[w]wstr指针时,需要所有强制转换来编译此宏结果。 一些Windows API(如LoadIcon)希望字符串指针作为其参数。可能,这些函数测试指针值,如果指针值小于某个最大值,则将其解释为资源索引,而不是字符串(丑陋的C样式接口的问题)。因此,这个宏允许以字符串形式传递单词,而不更改其值,并使用适当的强制转换。 |
![]() |
2
2
在大多数情况下,它保持值不变,但将其从int转换为指针,因此期望看到指针的函数可以接受它。中间强制转换将输入int扩大到与指针相同的大小,同时确保
反对
它正在延长标志。如果你在乎的话,
现在,他们使用ulong-ptr,32位目标的长度是32位无符号的,64位目标的长度是64位无符号的。 |
![]() |
3
1
这是一个宏,将参数i强制转换为一个单词,然后将结果强制转换为指向无符号长的指针,然后再次强制转换为指向宽字符串的长指针。 |
![]() |
4
1
正如其他用户所说,它只是将一个整数转换成一个“指向字符串的指针”。 其原因如下:在Windows3.0的古代,人们尽可能地追求极简主义。 假定可执行文件中的资源可以具有字符串标识符或整数。因此,当您尝试访问这样一个资源时,您可以指定上面的一个资源,并且函数会自动区分您的意思(通过检查提供的“指针”是否看起来像有效的指针)。 因为函数不能接收“变量参数类型”-他们决定让它接收lpctstr(或类似的类型),而 实际的 传递的参数可以是整数。
WindowsAPI的另一个例子:指向窗口过程的指针。每个窗口都有一个窗口过程(通过访问
|
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 10 月前 |