强制转换为函数指针?
是的,这是正确的。我觉得不是很可读,所以我建议声明必须指出函数的签名:
typedef void sigrout_t(void*);
我也有编码约定与rout_t
结束的类型是这样的类型的函数签名。否则,可能会将其命名为,因为_t
是一个后缀reserved Posix的
后者对我铸件,也许这样称呼它
((sigrout_t*) SGENT_1_calc) (someptr);
Upvoted for typedef,我完全同意。 – Joe 2013-04-04 09:45:54
一方面,typedef消除了冗余和混淆(至少对一些)括号的必要性。另一方面,它降低了立即确定演员的能力。如果你想知道演员是一个函数指针,你必须查找sigrout_t被定义为... +1来提供替代。 – Sebivor 2013-04-04 09:59:59
以_t结尾的名字是为POSIX保留的,请参阅http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html – satur9nine 2015-02-09 17:13:09
是的,这是一个演员,你已经说过。
是的,功能应该寻找这样
void func(void*);
但是这个陈述缺少一个目标,因为一个投射到什么都没有用。因此,它应该像
func = (void (*)(void *))SGENT_1_calc;
是它的一个函数指针,你可以分配给功能与 这里SGENT_1_calc可以直接分配给funcname的
投SGENT_1_calc为指针,以原无效funcname的(无效*)函数(指向void)返回void – 2013-04-04 09:28:22