bs@alice.UucP (Bjarne Stroustrup) (04/09/86)
> From: cudcv@daisy.warwick.UUCP (Rob McMahon) > > That reminds me - why do I have to say > > typedef int (*PF)(int); > int f ( PF f1 ) { ; } > > when I mean > > int f ( int (*f1)(int) ) { ; } > > which says > > "xx.c", line 1: error: syntax error Because cfront suffers from a dumb YACC grammar. Try int f ( auto int (*f1)(int) ) { } PS You don't have the write { ; } when you mean {}
hansen@pegasus.UUCP (Tony L. Hansen) (04/11/86)
< > From: cudcv@daisy.warwick.UUCP (Rob McMahon) < > ... why < > typedef int (*PF)(int); < > int f ( PF f1 ) { ; } < > ... instead of < > int f ( int (*f1)(int) ) { ; } < < From: alice!bs (Bjarne Stroustrup) < < Because cfront suffers from a dumb YACC grammar. Try < < int f ( auto int (*f1)(int) ) { } My copy of cfront accepts the above code, but then the generated code causes /bin/cc to complain! "junk.c", line 2: illegal class Passing this back to Bjarne gave this reply: < ***> So it does! curse it. Sorry. Re-reading my code, I find that < I actually use < < int f ( register int (*f1)(int) ) { } < < but I think that I'll make the ``auto'' version work. < < Could you possibly post a ``sorry, no AUTO, but REGISTER does < the trick'' note on the net? There you have it. Use "register" instead of "auto" to get your pointers to functions. Tony Hansen ihnp4!pegasus!hansen