【发布时间】:2011-02-11 12:55:00
【问题描述】:
我是一名 Java 开发人员,出于某种原因,我目前正在学习 C。问题是我在阅读函数定义时遇到了一些麻烦。例如,您能否给我一个提示:
void (*signal(int sig, void(*func)(int)))(int)
谢谢大家!
【问题讨论】:
标签: c function definition
我是一名 Java 开发人员,出于某种原因,我目前正在学习 C。问题是我在阅读函数定义时遇到了一些麻烦。例如,您能否给我一个提示:
void (*signal(int sig, void(*func)(int)))(int)
谢谢大家!
【问题讨论】:
标签: c function definition
你应该学习right-to-left rule。此页面包含很好的示例。
signal 是一个作为参数的函数:
int 并且不返回任何内容并返回指向采用int 的函数的指针,但什么也不返回。
【讨论】:
'cdecl' 的一个例子。我认为它可用于 Linux 或源代码可以下载和构建。
cdecl> explain char *(*fptab[])()
declare fptab as array of pointer to function returning pointer to char
cdecl>
【讨论】:
func 是一个指向函数的指针,它接受一个 int 并返回 void。
signal 是一个函数,它接受一个 int 和一个类似 func 的指针,并返回一个类似 func 的指针。
即:您指定哪个信号处理程序 (func) 与信号 (sig) 关联,并且该函数返回一个信号处理程序(前一个)可以存放在某个地方。
【讨论】: