[comp.lang.c] How do I define function returning pointer to function returning int?

art@dinorah.wustl.edu (Arthur B. Smith) (03/08/90)

HELP!!

    My "ANSI C" references (K&R2 and Mark Williams' "ANSI C, A Lexical
Guide") are conflicting and vague on an important (to me) issue, and I
don't have a copy of the standard (draft or otherwise).  I think the 
pertinent section of the standard may be 3.7.1

    The simplest question is "Can you define a function of no
arguments that returns a pointer to a function returning int?"

    The next question is "How?"

    Several contenders I see are:

#1)
int (* gorp ()) ( void )
    {...}

#2)
int ((* gorp)()) ( void )
    {...}

#3)
typedef int (* gorp_t)();
gorp_t gorp ( int a, int b )
    {...}

#4)
typedef int ((* gorp_t)());
gorp_t gorp ( int a, int b )
    {...}

    Which of these are legal?  Why are those that are not legal
illegal?  Which of these can I reasonably expect a compiler to
support?  What about "old style" C?

    BTW, I am assuming that it is perfectly legal to pass parameters
that are pointers to functions returning int, e.g.,

int frzp ( int (* farg)() )
    {...}

or

int frzp2 ( int ((* farg)()) )
    {...}

if I am wrong here, please let me know!  (And again, what about "old
style" C?)

	I am
    	-art smith
(art@dinorah.wustl.edu    or   ...!uunet!wucs1!dinorah!art)