回答
是的,这是正确的。我觉得不是很可读,所以我建议声明必须指出函数的签名:
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的
- 1. 将函数强制转换为c程序中的函数指针
- 2. 将成员函数指针转换为普通函数指针
- 3. C库警告(指针强制转换)
- 4. C++函数指针转换
- 5. ObjC:间接指针强制转换成Objective-C的指针
- 6. 将函数指针转换为指向函数类型的指针的结果
- 7. 将指针转换为成员函数指向静态函数
- 8. 将int函数强制转换为void *
- 9. 将const引用强制转换为const指针的常量指针
- 10. 将双指针的地址强制转换为void **
- 11. void *的函数指针数组转换
- 12. 初始化时将整数指针不进行强制转换
- 13. 没有强制转换问题的整数指针
- 14. “printf”式时将整数指针不进行强制转换
- 15. C++强制转换为指向相同大小类型的指针?
- 16. 将整数指针转换为整数
- 17. 如何强制仿函数应用于强制转换参数
- 18. 为什么我不能将函数指针转换为(void *)?
- 19. 将int转换为指针
- 20. INT转换为char *指针
- 21. 强制将sql.ColumnName强制转换为
- 22. C++ - 为什么std :: vector <> :: const_reference可以强制转换为非const指针?
- 23. 如何强制转换无效*对点云指针
- 24. 初始化使得整型指针没有强制转换
- 25. 赋值使得整型指针没有强制转换
- 26. 初始化使得整型指针没有强制转换
- 27. 链接表指针不进行强制转换错误
- 28. 指针转换
- 29. 将二维数组转换为指针
- 30. 为什么没有必要为此C#函数强制转换?
投SGENT_1_calc为指针,以原无效funcname的(无效*)函数(指向void)返回void – 2013-04-04 09:28:22