我已经搜索过,但找不到任何结果(我的术语可能有问题),所以如果以前有人问过这个问题,请原谅我。
我想知道是否有一种简单的方法可以调用void*
作为 C 中的函数,无需首先声明函数指针,然后为函数指针分配地址;
IE。假设要调用的函数是类型void(void)
void *ptr;
ptr = <some address>;
((void*())ptr)(); /* call ptr as function here */
通过上面的代码,我得到错误 C2066:转换为函数类型是非法的在VC2008中
如果可能的话,具有返回类型和多个参数的函数的语法有何不同?
你的演员阵容应该是:
((void (*)(void)) ptr)();
一般来说,这可以通过创建一个更简单的typedef
对于函数指针类型:
typedef void (*func_type)(void);
((func_type) ptr)();
然而,我应该指出,将普通指针(指向对象的指针)转换为函数指针或从函数指针转换为函数指针在标准 C 中并不严格合法(尽管它是常见扩展)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)