【发布时间】:2012-10-15 00:13:14
【问题描述】:
假设您有一个枚举类型,其值包含 50 多个条目。以前我曾多次使用此数量的条目切换/设置枚举值,但只是为了检查其中的 2 到 5 个条目。
例如,OpenGL 将其大部分枚举都固定在一种枚举类型中,称为GLenum。这些值的范围从GL_VERTEX_SHADER 到GL_STREAM_DRAW 到GL_TRIANGLES 到GL_ARRAY_BUFFER 等。
如您所见,虽然它们在更大的图景上是相关的,但它们的使用环境并不相互关联。
我在 Linux 中的 MinGW/GCC 上生成了警告,其中每个警告说明了其类型声明中列出的 每个 枚举值。我不确定这是否发生在 VC++ 上,但我想我还是会考虑它以防万一。
换句话说,每个枚举值生成的警告数量为TotalEnumValues - AmountOfCaseStatements,前提是语句本身并未考虑所有枚举,这可能很容易导致 100 多个编译器警告如果您的枚举类型包含至少 100 个条目。
我经常使用 if/else 来适应这种情况,但是在检查枚举值时不仅仅是 one 条目(这确实很少见,因为枚举的目的通常需要条件逻辑赞美它),我一直倾向于使用 switch/case,因为我发现它更美观(即使它只是编译成 if/else 语句;))
那么,这个警告可以关闭吗?如果是这样,怎么做?
【问题讨论】:
标签: c++ c visual-c++ compiler-warnings enumeration