Some complex function prototypes like signal()

Discussion in 'C Programming' started by lovecreatesbeauty, Jan 28, 2005.

  1. 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?

    lovecreatesbeauty, Jan 28, 2005
    1. Advertisements

  2. lovecreatesbeauty

    alexmdac Guest

    "The C Programming Language" has a good section on this subject. They
    provide source for a program that translates these type definitions
    into english.
    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 );
    This is a pointer to a function which returns nothing.
    alexmdac, Jan 28, 2005
    1. Advertisements

  3. al.h:
    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

    Jonathan Bartlett, Jan 28, 2005
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.