yog*_*ngh 1 c++ casting function-pointers
我正在使用dlsym()来加载函数符号
void (*func)(int);
func = (func*)dlsym(phandle, "function");
Run Code Online (Sandbox Code Playgroud)
这导致编译错误.但是,当我使用typedef来运行时
typedef void (*func)(int);
func function = null;
function = (func*)dlsym(phandle, "function");
Run Code Online (Sandbox Code Playgroud)
这编译好了,但我不明白,为什么它在第一种情况下失败了?谁能告诉原因?我读过C++标准不允许从void*直接转换为函数指针?为什么这个以及typedef是如何解决这个问题的呢?
它在第一种情况下失败,因为它func是一个变量,而不是一个类型,并且不能在强制转换中使用.
注意*错位:
typedef void (*func)(int);
/* ^ must be here. */
Run Code Online (Sandbox Code Playgroud)