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)
是的,功能应该是这样的
void func(void*);
Run Code Online (Sandbox Code Playgroud)
但是声明错过了一个目标,因为无所作为是无用的.所以应该是这样的
func = (void (*)(void *))SGENT_1_calc;
Run Code Online (Sandbox Code Playgroud)