Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 枚举丢失导致编译器出错_C++_C++11_Enums - Fatal编程技术网

C++ 枚举丢失导致编译器出错

C++ 枚举丢失导致编译器出错,c++,c++11,enums,C++,C++11,Enums,以下代码来自: 我想删除默认值,如果在我的枚举上切换未完成,则强制编译器生成错误 GCC/Clang 你在找我 每当switch语句具有枚举类型的索引时发出警告,并且 缺少该枚举的一个或多个命名代码的大小写。 枚举范围之外的案例标签在以下情况下也会引发警告: 使用此选项。-Wswitch与此之间的唯一区别 选项是,此选项提供有关忽略事件的警告 枚举代码,即使存在默认标签 即使使用默认值,它也会抱怨缺少Windows枚举。只需为Windows创建案例,并对默认值进行故障排除,以抑制枚举 Visua

以下代码来自:


我想删除
默认值
,如果在我的枚举上切换未完成,则强制编译器生成错误

GCC/Clang

你在找我

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

即使使用默认值,它也会抱怨缺少Windows枚举。只需为Windows创建案例,并对默认值进行故障排除,以抑制枚举

Visual Studio

VS在编译器级别3和4处理此问题。您需要启用警告
C4061/C4062

enum class OS_type { Linux, Apple, Windows };

const std::string ToString(OS_type v)
{
    switch (v)
    {
        case Linux:   return "Linux";
        case Apple:   return "Apple";
        case Windows: return "Windows";
        default:      return "[Unknown OS_type]";
    }
}
const std::string ToString(OS_type v)
{
    // warning: enumeration value 'Windows' not handled in switch [-Wswitch-enum]
    switch (v)
    {
        case OS_type::Linux:   return "Linux";
        case OS_type::Apple:   return "Apple";
        default:      return "[Unknown OS_type]";
    }
}