"Steven Schveighoffer" wrote in message news:[email protected]...

Putting default: assert(0); changes the meaning of the code. In other words:

switch(x)
{
    case 1: ...
}

is the same as:

switch(x)
{
    case 1: ...
    default: break;
}

You are keeping the code the same. I don't think people would think of adding the assert(0), I wouldn't.

Are we talking about writing new code or porting C/C++ code? If the latter, I agree there is a high chance of just copy-pasting in a default: break; everywhere the error pops up.

And as Ary pointed out, it may be that you expect the default to occur, but don't want to do anything.

Sure, and you know this when you write the code and choose the correct one.

'if' and 'switch' are commonly used interchangeably. Frequently one uses 'switch' where they would normally use 'if' to avoid evaluating something multiple times.

I'm not sure this is true, at least not in my code.

Reply via email to