转自知乎:typedef定义的复杂类型怎么还原成一行?

来源:互联网 发布:广州恒大淘宝足球官网 编辑:程序博客网 时间:2024/05/02 01:55

比如:
typedef void (*sighandler_t)(int);
sighandler_t signal(int, sighandler_t);
这2句可以写为一句:
void (*signal (int, void(*func)(int)))(int);

且不论还原有没有意义,要是有其他更复杂的typedef定义呢,我想问这还原的过程是如何操作的,有固定的方法吗?

1、补完所有的名字:
sighandler_t signal(int, sighandler_t fuck);

2、把所有出现该类型的地方,都以该类型定义的那一串代入typedef里面的类型名,基本上就是字符串替换
sighandler_t signal(int, sighandler_t fuck);
sighandler_t signal(int, void (*fuck)(int));
void (*signal(int, void (*fuck)(int)))(int);

3、把第一步添加的名字去掉
void (signal(int, void ()(int)))(int);

0 0
原创粉丝点击