c语言中与硬件的交互
通过保存函数地址的指针调用函数会产生错误 代码: 但是当我通过c语言中与硬件的交互,c,winapi,function,pointers,C,Winapi,Function,Pointers,通过保存函数地址的指针调用函数会产生错误 代码: 但是当我通过(*p)()调用时,代码生成错误它表示术语的计算结果不是函数。 我是如何克服这个问题的?还有其他方法使用指针调用函数吗?您需要将GetProcAddress的返回值强制转换为正确的函数类型。例如: typedef void (*FuncPtr)(); //assuming a function like void f() FuncPtr p; p = (FuncPtr) GetProcAddress(h, "funcName"
(*p)()调用时,代码生成错误代码>它表示术语的计算结果不是函数。
我是如何克服这个问题的?还有其他方法使用指针调用函数吗?您需要将GetProcAddress
的返回值强制转换为正确的函数类型。例如:
typedef void (*FuncPtr)(); //assuming a function like void f()
FuncPtr p;
p = (FuncPtr) GetProcAddress(h, "funcName");
if (p)
p();
else
printf("Function not found\n");
您需要将GetProcAddress
的返回值强制转换为正确的函数类型。例如:
typedef void (*FuncPtr)(); //assuming a function like void f()
FuncPtr p;
p = (FuncPtr) GetProcAddress(h, "funcName");
if (p)
p();
else
printf("Function not found\n");
验证p
声明如下:
void (*p)(void);
并且GetProcAddress
的返回值类型相同。验证p
声明如下:
void (*p)(void);
并且GetProcAddress
返回值的类型是相同的。显示p的声明(如果是typedef
,则显示其类型)显示p的声明(如果是typedef
,则显示其类型)