By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,595 Members | 3,721 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,595 IT Pros & Developers. It's quick & easy.

Some complex function prototypes like signal()

P: n/a
Hello,

I'm confused by some complex function prototypes. Would you please
explain those to me in detail with C language syntax itself with your
rich knowledge & experiences. Thank you.
1. The prototype of function signal in signal.h:

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

it's some complex to me. Please explain the C language syntax used to
make up this complex prototype.

2. And I saw another function prototype:

void interrupt (*oldhandler)();

-Is it legal?

-If it's a right prototype, what does identifier "interrupt" mean?
Should it be a type qualifier?

Thanks

---
lovecreatesbeauty

Nov 14 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a

lovecreatesbeauty wrote:
I'm confused by some complex function prototypes.
"The C Programming Language" has a good section on this subject. They
provide source for a program that translates these type definitions
into english.
void (*signal(int sig, void (*func)(int)))(int);
You can simplify this:

/* Pointer to a function that takes an int and returns nothing. */
typedef void (*SIGNAL_HANDLER)(int);

/* Simplified signal prototype. */
SIGNAL_HANDLER signal( int signal, SIGNAL_HANDLER handler );
void interrupt (*oldhandler)();

This is a pointer to a function which returns nothing.

Nov 14 '05 #2

P: n/a
al.h:

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

it's some complex to me. Please explain the C language syntax used to
make up this complex prototype.


The return type for signal is a function pointer that, when called takes
one int argument.

func is a function pointer that takes one int argument.

For more about function pointers, see http://www.newty.de/fpt/index.html

Jon
----
Learn to program using Linux assembly language
http://www.cafeshops.com/bartlettpublish.8640017
Nov 14 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.