如何为未完成的枚举生成字符串转换生成编译错误?

时间:2016-01-23 18:32:34

标签: c++ enums compiler-errors

我们有这样的事情:

Enum IdEnum 
{
    Id_1,
    Id_2
}


GetNameById(IdEnum Id) : string
{
    switch Id
    {
        case Id_1 : return "1";
        case Id_2 : return "2";
    }
}

如果我们将Id_3添加到枚举中,有没有办法生成编译错误,但是不要在GetNameById中为它添加 case 语句?

1 个答案:

答案 0 :(得分:1)

https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

  

-Wswitch每当switch语句具有枚举类型的索引并且缺少一个或多个指定代码的大小写时发出警告   列举。 (默认标签的存在会阻止此警告。)   枚举范围之外的案例标签也会引发警告   使用此选项(即使存在默认标签)。这个警告   由-Wall启用。

     

-Wswitch-enum只要switch语句具有枚举类型的索引并且缺少一个或多个指定代码的大小写,就会发出警告   那个枚举。枚举范围之外的案例标签也是   使用此选项时会引发警告。唯一的区别   -Wswitch和此选项是即使存在默认标签,此选项也会提供有关省略的枚举代码的警告。