http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49182
--- Comment #3 from Brad <brad.lionberger at intel dot com> 2011-05-26 23:23:17 UTC --- (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; // Pointer to function with struct as parameter typedef int (*FxnPointer)(a* WontComplie); // Actual declaration of struct with function pointer type declared above. struct _a { int foo; int bar; FxnPointer PtrToFxn; } a; int main(void) { return 0; } Resutls are : FxnPtrEx.c:5:28: error: expected ‘)’ before ‘*’ token FxnPtrEx.c:12:2: error: expected specifier-qualifier-list before ‘FxnPointer’ It seems to not take the forward declaration of the struct as a member of the parameter list of the FxnPointer type, unless I am missing something here. What I am trying to do is create a function pointer that takes in as a parameter a pointer to a structure, but in that structure is a function pointer of that type. I am confused as to why the forward declaration is not working here.