2011-02-11 65 views
6

我是Java开发人员,出于某种原因,我正在研究C。问题是我在阅读函数定义时遇到了一些麻烦。你能给我一个这个例子的提示:阅读C中的函数定义

void (*signal(int sig, void(*func)(int)))(int) 

谢谢你们!

回答

4

您应该了解right-to-left rule。这个页面包含很好的例子。

signal被一个函数取作为参数:

  • 的整数
  • 函数指针服用int和返回没什么

并返回一个指向funcction服用int和返回什么。

+1

在网上查找'cdecl'。 BTW信号是更复杂的例子之一。 :-) – 2011-02-11 13:07:18

+0

非常感谢很多人!实际上并不认为一个函数可以以这种方式返回一个函数。 Thanksss! – 2011-02-11 13:34:19

2

func是一个函数指针,它接受一个int并返回void。

信号是一个函数,它接受一个int和一个像func这样的指针,并返回一个类似于func的指针。

那就是:你指定哪个信号处理器(FUNC)关联到信号(SIG ),以及该函数返回一个信号处理器(前一),你可以在一些地方保存。

2

“cdecl”的实例。我认为它可用于Linux或源码可以下载&内置。

cdecl> explain char *(*fptab[])() 
declare fptab as array of pointer to function returning pointer to char 
cdecl>