转换为函数指针?

Tob*_*oby 25 c function-pointers

遇到下面显示的代码行我觉得它可能是一个函数指针的转换,返回void并获取一个void指针,这是正确的吗?

(void (*)(void *))SGENT_1_calc
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 35

是的,这是对的.我发现它不是很易读,所以我建议声明要指向的函数的签名:

 typedef void sigrout_t(void*);
Run Code Online (Sandbox Code Playgroud)

我也有编码约定,类型结尾rout_t是函数签名的类型.你可以用它来命名,因为它_t是Posix 保留的后缀

后者我在演员,也许就是这样称呼它

 ((sigrout_t*) SGENT_1_calc) (someptr);
Run Code Online (Sandbox Code Playgroud)


bas*_*h.d 5

是的,功能应该是这样的

void func(void*);
Run Code Online (Sandbox Code Playgroud)

但是声明错过了一个目标,因为无所作为是无用的.所以应该是这样的

func = (void (*)(void *))SGENT_1_calc;
Run Code Online (Sandbox Code Playgroud)