dlsym() 解决方法返回类型
dlsym() workaround return type
dlsym()
列表的手册页
*(void **) (&cosine) = dlsym(handle, "cos");
作为强制转换dlsym()
的返回值的解决方法。
这里*(void **) (&cosine)
的含义是什么?我知道cosine
是之前定义的函数指针,但我不确定为什么在名称之前需要&
号(没有&
的错误)。此外,我不明白为什么void *
(void **
)的指针再次与*
一起使用。
让我们一次解开一下:
&cosine
这需要一个指向变量cosine
的指针,所以这将是一个指向函数指针的指针。
(void **) &cosine
我们将指针到函数指针转换为指针到指针到空。
* (void **) &cosine
我们取消引用强制转换的指针,将dlsym()
的结果分配给它。
实际上,正在发生的事情只是问题的旁敲侧击。 我们不是将dlsym()
的结果强制转换为正确类型的函数指针,而是假装cosine
是一个void *
(通过间接级别)并分配给它。
相关文章:
- 我的模板类方法返回错误类型?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- 具有引用返回类型的重写方法上的协变返回类型无效
- Arduino trim() 和 replace() 方法返回从 'void' 到非标量类型'String'请求的转换
- Java 调用 dll 字符串返回类型方法
- 必须使用尾随返回类型的示例,因为无法用旧方法解决问题
- 如何拥有两个名称相同但返回类型不同的纯虚拟方法
- 可能从单个方法返回不同类型的对象
- qml 未知方法返回类型:ArchiveFile*,即使调用了 qmlRegisterUncreatableType
- std::d eclval vs crtp,无法从不完整类型推断方法返回类型
- 将返回类型推断为模板参数类型方法
- dlsym() 解决方法返回类型
- 我如何根据某些模板参数影响模板类方法的返回类型
- 如何检查模板类方法返回类型
- 覆盖方法返回类型,在C 中使用不完整的派生类
- 类成员方法 - 返回类型模板
- C++中具有多态模板类的未知方法返回类型
- 是否可以使用Boost概念检查库验证方法返回类型
- 使用不同方法返回类型的C++模板类设计