投射到函数指针?(Cast to function pointer?)

2019-08-19 10:32发布

所遇到的代码行如下所示我想它可能是一个投地返回void,并采取了空指针的函数指针,是正确的?

(void (*)(void *))SGENT_1_calc

Answer 1:

是的,它是正确的。 我觉得不是很可读,所以我建议声明必须指出函数的签名:

 typedef void sigrout_t(void*);

我也有编码约定结尾类型rout_t是这种类型的功能特征。 否则,可能会将其命名为,因为_t是一个后缀保留通过的Posix

后者对我铸件,也许这样称呼它

 ((sigrout_t*) SGENT_1_calc) (someptr);


Answer 2:

的确是这样,功能应该这样看

void func(void*);

但声明中缺少一个目标,因为投给什么也没用。 因此,它应该是这样的

func = (void (*)(void *))SGENT_1_calc;


Answer 3:

是的,这是因为你已经说一个演员。



Answer 4:

它是可以分配到一个功能与原无效funcname的(无效*)这里SGENT_1_calc的函数指针可以直接分配给funcname的



文章来源: Cast to function pointer?