其他分享
首页 > 其他分享> > c-dlsym()解决方法返回类型

c-dlsym()解决方法返回类型

作者:互联网

man page的dlsym()列出

   *(void **) (&cosine) = dlsym(handle, "cos");

作为强制转换dlsym()返回值的解决方法.

*(void **)(&余弦)在这里是什么意思?我知道余弦是先前定义的函数指针,但我不确定为什么&符为何.名称前需要(没有&的错误).而且,我不知道为什么void *(void **)的指针再次与*一起使用.

解决方法:

让我们一次解开它:

&cosine

这需要一个指向变量余弦的指针,因此它将是一个指向函数指针的指针.

(void **) &cosine

我们将指针到函数指针转换为指针到无效指针.

* (void **) &cosine

我们取消引用强制转换的指针,将dlsym()的结果分配给它.

实际上,正在发生的事情是问题的一个回避步骤.我们没有将dlsym()的结果强制转换为正确的函数指针类型,而是假装余弦是一个void *(通过间接级别)并分配给它.

标签:c,dlsym
来源: https://codeday.me/bug/20191011/1893398.html