------- Comment #9 from alex dot pyattaev at gmail dot com 2010-05-09 19:07 ------- (In reply to comment #7) > I have encountered the bug with switch construct. And the problem is not the > error message, but the fact that it is still compiling just fine this code: > switch (chan_prop.model_type) > { > case CM_STATIC: > return static_channel_model(src, ntransmitters, dst, > &chan_prop); > case CM_FRISS: > return friss_channel_model(src, ntransmitters, dst, > &chan_prop); > default: > return -1; > } > There should be some consistency at least! I'd like to see this fixed > properly. > The compiler should be perfectly predictable, and not like "Sorry, i don't > like > this construct here... put a semicolon please". > > I'd like this bug to be reopened and FIXED PROPERLY > > gcc --version = (Gentoo 4.4.3-r2 p1.2) 4.4.3 >
A good example of seemingly normal code is following: switch (whatever) { case 1: int i=0; i++; printf("%d",i); break; } It is technically perfectly legal to declare i as a local variable. However, the compiler issues an error. And it is absolutely not clear why "int i=0;" is not a statement. That is probably the only really annoying case. Moving declaration of i into a code block solves the issue. I spent like 10 minutes trying to find out why perfectly legal code would not compile. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37231