假设您有一个枚举类型,其值包含 50 多个条目。以前我曾多次使用此数量的条目切换/设置枚举值,但只是为了检查其中的 2 到 5 个条目。
例如,OpenGL 将其大部分枚举都放在一种枚举类型中,称为GLenum
. 这些值的范围从GL_VERTEX_SHADER
toGL_STREAM_DRAW
到GL_TRIANGLES
toGL_ARRAY_BUFFER
等。
正如您所看到的,虽然它们在更大的图景方面是相关的,但它们的使用上下文并不相互关联。
我在 Linux 中的 MinGW/GCC 上生成了警告,其中每个警告都说明了其类型声明中列出的每个枚举值。我不确定这是否发生在 VC++ 上,但我想我还是会考虑它以防万一。
换句话说,生成的警告数量是TotalEnumValues - AmountOfCaseStatements
针对每个枚举值的,前提是语句本身并未考虑所有枚举,如果您的枚举类型包含至少 100 个条目,这很容易导致 100 多个编译器警告。
我经常使用 if/else 来适应这一点,但是当检查不止一个条目的枚举值时(这真的很罕见,因为枚举的目的通常需要条件逻辑来补充它),我一直是倾向于使用 switch/case,因为我觉得它更美观(即使它只是编译成 if/else 语句;))
那么,这个警告可以关闭吗?如果是这样,怎么做?