Albus Dumbledore
Albus Dumbledore

Reputation: 12616

Reading function definitions in C

I'm a Java dev, and for some reason I'm studying C at the moment. The thing is I'm having some trouble reading function definitions. Could you give me a hint with this one for instance:

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

Thanks guys!

Upvotes: 6

Views: 179

Answers (3)

Francesco
Francesco

Reputation: 3250

func is a pointer to a function which takes an int and returns void.

signal is a function which takes an int and a pointer like func and returns a pointer like func.

That is: you specify which signal handler (func) associate to the signal (sig), and the function returns a signal handler (the previous one) which you can store somewhere.

Upvotes: 2

David Victor
David Victor

Reputation: 826

An example of 'cdecl' in action. I think its available for Linux or source can be downloaded & built.

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

Upvotes: 2

Benoit
Benoit

Reputation: 79175

You should learn the right-to-left rule. This page contains good examples.

signal is a function taking as arguments:

  • an integer
  • a pointer to function taking int and returning nothing

and returning a pointer to a funcction taking int and returning nothing.

Upvotes: 4

Related Questions