c - 什么 *(DWORD_PTR*)&functionA = functionB( var1, var2);做?

标签 c winapi casting function-pointers

*(DWORD_PTR*)&FunctionA =  FunctionB( var1, var2, etc...);

这段代码是什么意思?它有什么作用?

我试着用谷歌搜索,但我不知道该用什么词。

前面的代码中有:

BOOL (WINAPI * FunctionA) (var1, var2, etc...) = NULL;

它标识“FunctionA”是什么。

最佳答案

我假设是 *(DWORD_PTR*)&functionA 部分让您感到困惑?

让我们把它分解成几个部分。让我们从 &functionA 开始。它获取 functionA 的地址(无论是什么)并返回指向它的指针。

然后我们有 (DWORD_PTR*) 将指向 functionA 的指针转换为指向 DWORD_PTR 的指针。

最后是单独的 * 开头,它是解引用运算符,它接受一个指针并为您提供 if 指向的值。

与函数调用放在一起,它只是将调用functionB的结果赋值给变量functionA

我只是在这里猜测,但有可能 functionB 以某种通用方式返回指向函数的指针(我猜是 DWORD_PTR),然后将其分配给变量 functionA,它可能具有指向函数的类型指针。转换和取地址和取消引用运算符是因为 functionB 的返回类型。 我猜。没有更多信息或上下文,就无法确定。

关于c - 什么 *(DWORD_PTR*)&functionA = functionB( var1, var2);做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39038232/

相关文章:

c++ - 清理 RAM(也许是 win32 api)?

c++ - 将整数隐式转换为类 'BigInt'

c - 将带有参数的函数传递给信号处理程序?

SonarQube 的 C 插件

c++ - 我有哪些跨程序通信选项?

c# - 如何使类似菜单的表单保留在屏幕上所有其他应用程序之上?

Java 转换对象

c++ - reinterpret_cast<char*>(p) 或 static_cast<char*>((void*)p)) 用于字节指针差异,哪个更好?

C while 不停止

c - 释放导致崩溃