【发布时间】:2015-08-19 15:51:37
【问题描述】:
我对 C 很陌生,无法成功理解以下代码:
#include <signal.h> //1
typedef void (*sighandler_t)(int); //2
sighandler_t signal (int signo, sighandler_t handler); //3
第 3 行是:
signal 是一个接受 2 个参数的函数,一个是整数,另一个是 sighandler_t 并返回一个 sighandler_t?
但是 sighandler_t 是什么?
它是一个指向函数的指针吗,被指向的函数是一个接受 int 类型参数并返回 void 的函数?
你能举例说明我如何使用它吗?
【问题讨论】:
-
signal() 这些天已经贬值了。 “man signal”说: signal() 的行为因 UNIX 版本而异,并且在历史上因 Linux 的不同版本而异。避免使用它:使用 sigaction(2) 代替。
-
@StarPilot 确实如此,从 16 年前开始。
-
gcc(至少)识别 C++ 风格的 cmets。它是 C。
-
如果您打算在
C中使用函数指针,请考虑改用原始指针。 -
@hacks,谢谢!我很感激!
标签: c