gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:29 25 4
gpt4 key购买 nike

man page dlsym() 列表

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

作为转换 dlsym() 返回值的解决方法。

这里的*(void **) (&cosine)是什么意思?我知道 cosine 是之前定义的函数指针,但我不确定为什么在名称前需要一个符号 & (没有 & 的错误>).此外,我不明白为什么 void * (void **) 的指针再次与 * 一起使用。

最佳答案

让我们一次打开它:

&cosine

这需要一个指向变量 cosine 的指针,所以这将是一个指向函数指针的指针。

(void **) &cosine

我们将指向函数的指针转换为指向 void 的指针。

* (void **) &cosine

我们取消引用转换后的指针,将 dlsym() 的结果赋值给它。

实际上,发生的事情是问题的旁路。我们不是将 dlsym() 的结果转换为正确类型的函数指针,而是假设 cosine 是一个 void *(通过一个级别间接的)并分配给它。

关于c++ - dlsym() 解决方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com