如果我希望switch(an_enum)
在错过枚举案例时报告我的语句,我可以打开-Wswitch
编译器标志(在 gcc 上)。
enum E { e1, e2, e3 };
...
switch(e) {
case e1: ...
case e2: ...
// NO default: checked by -Wswitch and -Werror
}
它工作得很好:“错误:枚举值'e3'未在开关[-Werror = switch]中处理”
但是现在我的代码的正确性取决于使用的编译器标志,这有点脆弱。
像这样的东西:
switch(e) __attribute__((exhaustive))
{
...
}
-Wswitch
如果标志关闭,有没有办法让那段代码失败?还是在代码中临时打开它?