Reputation: 12616
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
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
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
Reputation: 79175
You should learn the right-to-left rule. This page contains good examples.
signal
is a function taking as arguments:
int
and returning nothingand returning a pointer to a funcction taking int
and returning nothing.
Upvotes: 4