1
47
转换A
知道您所做的工作严重依赖于实现,这里有一个选项应该在大多数平台上编译和工作(假设32位指针,使用long long for 64位),尽管根据标准,它显然是未定义的行为:
这里还有另一个应该编译和工作的选项,但是也有与上面相同的警告:
或者,慢动作…
它实际上利用了函数指针的地址是一个对象指针这一事实。
不错——当然不是定义良好的代码——但是它应该像您期望的那样在大多数实现上执行。 |
2
8
请注意,C++ 11允许这样的转换,并且从GCC 4.9和以上转换不产生警告: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57869 . 参见销售代表讨论: |
3
1
我发现这个(有点难看)解决方案。 具有最高警告级别的GCC不会投诉。 此示例调用dlsym()(返回void*)并在函数指针中返回结果。
|
4
0
这在Visual Studio中编译,而不使用reinterpret cast:
|
5
0
可以使用以下技术:
或
编译:
|
6
-6
这可能对你有帮助。上面印着“你好”。
或者你可以这样做:
其中&hello替换为dlsym命令。 |
Jiji · 将简单对象强制转换为简单的通用接口 6 年前 |
tobeypeters · 反射铸造 6 年前 |
Alex · 是否改为存储字符串的整数的通用ArrayList? 6 年前 |
Kai · 如何在C#中转换会话中存储的词典? 6 年前 |
Ján ЯabÄan · 布尔值到双精度的快速转换方法 6 年前 |