http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49182
--- Comment #6 from Brad <brad.lionberger at intel dot com> 2011-05-26 23:48:27 UTC --- (In reply to comment #5) > (In reply to comment #3) > > (In reply to comment #2) > > > I forgot to mention GCC compiles it correctly with the C++ front-end. > > > > Removing the typedefs will still cause compilation to error out not knowing > > what a is. For example: > > > > // Forward declaration > > struct a; > You've declared the type "struct a" > > // Pointer to function with struct as parameter > > typedef int (*FxnPointer)(a* WontComplie); > You've tried to use "a" which is undeclared > > // Actual declaration of struct with function pointer type declared above. > > struct _a > > { > > int foo; > > int bar; > > FxnPointer PtrToFxn; > > } a; > Now you've declared a variable called "a" with type "struct _a" Ah, I see now! Thank you very much.