【发布时间】:2014-01-04 02:48:53
【问题描述】:
如何将void* 转换为int ( * () ) (int,...)?
void* 来自dlsym。此代码未编译:
typedef int ( *PSYS () ) (int,...);
PSYS getf = (PSYS) dlsym(lib, "function" );
【问题讨论】:
-
为什么要将
void *转换为其他类型? -
@hacks 因为
void*是dlsym返回的内容。 -
@PascalCuoq;它不应该隐式转换为那种类型吗? (对此了解不多)。
-
@hacks 1- 从 void* 到函数指针的转换在标准 C 中是未定义的,因此不会隐式发生。 2-即使从函数指针到函数指针的转换也不会在应用程序中隐式发生(我认为它们发生在将函数指针分配给函数指针左值时)。
-
“未编译”不是已知的错误消息。告诉我们你实际得到的那个。它可能与 typedef 中类型的语法有关,这看起来很荒谬。
标签: c++ c pointers function-pointers