C/C++ 将空隙* 转换为 int ( * () ) (int,..);

C/C++ casting void* to int ( * () ) (int,...);

本文关键字:int C++ 转换      更新时间:2023-10-16

如何将void*投射到int ( * () ) (int,...)

void*来自dlsym.此代码未编译:

typedef  int ( *PSYS () ) (int,...);
PSYS getf =  (PSYS) dlsym(lib, "function" );

PSYS 是函数的类型,而不是指向函数的指针。你想要

typedef  int ( *PSYS () ) (int,...);
PSYS* getf =  (PSYS*) dlsym(lib, "function" );

如果符号是函数指针,则 typedef 可能是错误的。 应该是:

typedef int (*PSYS)(int, ...);