This compiles, I think the "mystery *mystery" you had is not good to have an identifier name also be that of a type. I changed "mystery" to "mystery_VAR" below. (not sure it is doing what you want, though).
struct mysteryStruct { struct mysteryStruct *next; int dontCare; }; typedef struct mysteryStruct mystery; mystery *nextMystery; /* Pointer declaration - no problem */ mystery mysteryPool[ 200 ]; /* Array of structs - no problem */ mystery * /* Function type - no problem */ problem( mystery *mystery_VAR ) /* Parameter declaration - no problem */ { mystery *hosed; /* Auto variable declaration - choke and die! */ hosed = mystery_VAR->next = nextMystery; nextMystery = mystery_VAR; return( hosed ); } ***************************************************************** To unsubscribe from this list, send mail to [EMAIL PROTECTED] with the text 'unsubscribe gnhlug' in the message body. *****************************************************************