Mar*_*rio 1 c++ casting shared-libraries void-pointers dlsym
host.cpp有:
int main (void)
{
void * th = dlopen("./p1.so", RTLD_LAZY);
void * fu = dlsym(th, "fu");
((void(*)(int, const char*)) fu)(2, "rofl");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并且p1.cpp具有:
#include <iostream>
extern "C" bool fu (float * lol)
{
std::cout << "fuuuuuuuu!!!\n";
return true;
}
Run Code Online (Sandbox Code Playgroud)
(我故意留下错误检查出来)
当执行主机时,"fuuuuuuuu !!!"被正确打印,即使我将带有完全不同功能签名的符号的void指针类型化.
为什么会发生这种情况,这种行为在不同的编译器之间是否一致
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |