转换为函数指针?
遇到过下面显示的代码行,我认为它可能是一个函数指针的转换,返回void并获取一个void指针,这是正确的吗?
(void (*)(void *))SGENT_1_calc
是的,这是正确的。 我发现它不是很易读,所以我建议声明要指出的函数的签名:
typedef void sigrout_t(void*);
我也有编码约定 ,以rout_t
结尾的类型是函数签名的类型。 你可以用它来命名,因为_t
是Posix 保留的后缀
后者我正在施法,也许就是把它称之为
((sigrout_t*) SGENT_1_calc) (someptr);
是的,function应该是这样的
void func(void*);
但是声明错过了一个目标,因为无所作为是无用的。 所以应该是这样的
func = (void (*)(void *))SGENT_1_calc;
是的,如你所说,它是一个演员。
是的,它是一个函数指针,你可以用proto void funcname(void *)分配给一个函数这里SGENT_1_calc可以直接赋值给funcname