开关盒自动断开

时间:2015-07-09 06:41:29

标签: c switch-statement

是否有任何带有扩展的C编译器能够在每个case语句结束时自动中断(类似于Swift可用的)或未来C规范中可用的更改开关?

对此非常感兴趣,以避免在广泛的交换机情况下出现混乱。

我觉得这个工作“没问题”,但更喜欢这个行为更清楚。

#define case   break; { } case
#define switch_break switch

switch_break (action) 
{
    default: printf ("Unknown action");

    case action_none   :   // Nothing
    case action_copy   :   doCopy ();
    case action_paste  :   doPaste ();         
    case action_none   :   break;  /* C requires a statement after final case */

}

1 个答案:

答案 0 :(得分:0)

如果您不想每次都写break,请将switch语句包装在函数中。然后break可以替换为return语句。例如

int switch_func(char c) {
    switch(c) {
        case 'a': return 1;
        case 'b': return 3;
        case 'c': return 5;
        case 'd': return 7;
        . . .
        default: return 0;
    }
}

仅在存在返回值时减少代码。