On 09/15/2011 12:43 AM, bearophile wrote:
Timon Gehr:
What would you suggest?
At the moment I suggest nothing, because the situation is set.
Case syntax was discussed a lot, by me too. I suggested to differentiate the syntax, not
using ".." because in D they denote an interval open on the right.
'C switch' means 'jump table'. It does do that perfectly. ;)
C language is full of badly designed parts :-)
What is your point?
Well, I don't understand the error it gives :-) Are you able to explain it to
me?
import std.stdio;
void main() {
int i = 1;
switch(i) {
case 0:
writeln("case 0");
goto default; // needed here
aLabel:
writeln("a label");
default:
writeln("default");
// But always falls through here
}
}
test.d(10): Error: switch case fallthrough - use 'goto default;' if intended
Bye,
bearophile
import std.stdio;
void main() {
int i = 1;
switch(i) {
case 0:
writeln("case 0");
// goto default; // NOT needed here (for it to compile)
aLabel:
writeln("a label");
goto default; // explicit fall through
default:
writeln("default");
// But always falls through here
}
}
And that is exactly the same as this:
import std.stdio;
void main() {
int i = 1;
switch(i) {
case 0:
writeln("case 0");
writeln("a label");
goto default; // comment this out to get your error back.
default:
writeln("default");
}
}
It is a simple case of switch case fallthrough.