coleman@twinsun.com (Mike Coleman) (07/06/89)
I am having a problem with this piece of code:
void good()
{
void (*f)(int a,struct { int b; },int c);
}
typedef void (*ft)(int a,struct { int b; },int c);
void bad()
{
ft f;
}
which when compiled with this command line:
gcc -c foo.c
produces these error messages:
try.c: In function bad:
try.c:10: `ft' undeclared (first use this function)
try.c:10: (Each undeclared identifier is reported only once
try.c:10: for each function it appears in.)
try.c:10: parse error before `f'
As far as I can tell, this is a correct (though admittedly useless) ANSI C
translation unit. Removing 'struct { int b; },' from the typedef line will
allow the program to compile without errors. The program was compiled on a
Sun 3/260 running SunOS 4.0.
I realize that the type definition given is seriously pathological even if
legal, but the error messages are puzzling. If this is not in fact a
correct program, a reference or an explanation would be greatly appreciated.
Please keep up the good work on this excellent compiler!
--Mike
(coleman@twinsun.com or coleman@cs.ucla.edu)