bs@alice.UucP (Bjarne Stroustrup) (05/24/86)
cit-vax.Caltech.Edu (Jonathan P. Leech) > > The following code: > > int spam() { > double (*z)[4] = (double (*)[4])0; > } > > is legal C code. It is not legal C++ code (release 1.0), > generating the following error message: > > "junk.c", line 2: error: z is undefined > > Declarations of this form seem not to cause any problem in member > functions of classes (the only other context in which I had occasion > to use them in C++ until tonight). This is a most annoying bug. Any > help in fixes or workarounds would greatly appreciated. Yes that is a nasty cfront bug. Sorry. The code is legal C++ but I have persistent problems convincing YACC about that. Fortunately the workaround is simple: int spam() { auto double (*z)[4] = (double (*)[4])0; } In general, if you get funny error messages in connection with pointer to function declarations use a storage class specifier to help YACC.