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

How to generate compile error for not completed enum to string conversion?

本文关键字:转换 错误 编译 字符串 未完成 枚举      更新时间:2023-10-16

我们有这样的东西:

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 语句,有没有办法生成编译错误?

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

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

-

wswitch-enum 每当 switch 语句具有枚举类型的索引并且缺少一个或多个命名代码的大小写时发出警告 该枚举。枚举范围之外的案例标签也 使用此选项时引发警告。唯一的区别 -Wswitch,此选项是此选项发出有关省略枚举代码的警告,即使存在默认标签。