Few things
Lionello Lunesu
lio at lunesu.remove.com
Wed Aug 8 07:27:42 PDT 2007
Don Clugston wrote:
> Lionello Lunesu wrote:
>>> 7) From the FAQ:
>>
>>> Many people have asked for a requirement that there be a break
>> > between cases in a switch statement, that C's behavior of
>> > silently falling through is the cause of many bugs.
>> > The reason D doesn't change this is for the same reason that
>> > integral promotion rules and operator precedence rules were
>> > kept the same - to make code that looks the same as in C
>> > operate the same. If it had subtly different semantics, it
>> > will cause frustratingly subtle bugs.
>>
>>> I agree with both points of view. My idea: calling this
>> > statement differently (like caseof) instead of "switch"
>> > (like in Pascal), so you can change its semantics too,
>> > removing the falling through (you may use the Pascal
>> > semantic too).
>>
>> Sorry to hijack your point here, but this got me thinking:
>>
>> Why not use "continue" for seeping through to the next case statement?
>> DMD could then complain if a case does not end with
>> break/continue/goto/return and silently insert a assert(0) before each
>> case (the way it does for functions that return a value.)
>
> Doesn't
>
> for (c;;) {
> switch (c) {
> case 'a': continue;
> case 'b': break;
> }
> }
>
> already have a meaning?
Yes, I've done that too, but honestly I'd be the first one to admit that
it isn't very clear. In fact, I'd go so far as to call it a reason to
attach a meaning to "continue" in a switch/case.
As mentioned, it would break existing code :(
L.
More information about the Digitalmars-d
mailing list