【发布时间】:2019-12-04 22:08:34
【问题描述】:
我经常将typedefs 用于类型和函数声明。
问题是:是否可以定义具有先前声明的类型(即:签名)的函数?
我的意思是:鉴于众所周知的声明:
void (*signal(int sig, void (*func)(int)))(int);
或者,更好的是,它是(更清晰的)等价物:
typedef void SigCatcher(int);
SigCatcher *signal(int sig, SigCatcher *func);
如何定义SigCatcher 函数?
我当然可以定义:
void my_sig_catcher(int sig, SigCatcher *func) {
...
}
但这并不能说明这确实是SigCatcher。
我想要的是这样的:
SigCatcher my_sig_catcher {
...
}
但这不是一个有效的结构。
是否有一些(不太做作的)方法来实现这一点?
【问题讨论】:
-
我会说一个几乎肯定的“不”......但让我们看看我是否错了。
-
如果允许的话,对于带参数的函数,它仍然无法使用,因为无法将它们命名为在函数体中使用...
-
void my_sig_catcher(int sig, SigCatcher *func)的声明与SigCatcher my_sig_catcher或void my_sig_catcher(int)的声明不兼容,我猜, SigCatcher *func只是一个错字。