The following code: int main( int argc, char** argv ) { switch ( 1 ) { case 1: int bug = 0; break; } return 0; }
is valid C syntax and should compile, but gcc gives the error: bug.c: In function 'main': bug.c:6: error: expected expression before 'int' gcc doesn't properly interpret the variable declaration immediately following the "case 1:" However, if another statement is inserted (even a blank statement, just a semicolon) such as: int main( int argc, char** argv ) { switch ( 1 ) { case 1: ; // workaround int bug = 0; break; } return 0; } gcc compiles this fine. I have successfully reproduced this on multiple platforms both 32 bit and 64 bit in gcc 4.1.1 and 4.0.2. I suspect earlier and intermediate versions suffer from this bug as well. -- Summary: parser bug for variable declaration immediately following case statement in switch block Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: trivial Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: alx at gotnull dot net GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29444