値に50以上のエントリがある列挙型があるとします。以前にこのエントリ数で列挙値を切り替えたりケースに入れたりしたことがありますが、たとえば、これのうち2〜5エントリをチェックするだけです。
たとえば、OpenGLは、列挙型の大部分を、と呼ばれる1つの列挙型に固定しGLenum
ます。これらの値の範囲は、からGL_VERTEX_SHADER
、などです。GL_STREAM_DRAW
GL_TRIANGLES
GL_ARRAY_BUFFER
ご覧のとおり、これらは全体像の観点から関連していますが、使用されるコンテキストは相互に関連していません。
LinuxのMinGW/GCCで警告を生成しました。各警告は、型宣言にリストされているすべての列挙値を考慮しています。これがVC++で発生するかどうかはわかりませんが、念のためにとにかく説明すると思いました。
つまり、生成される警告の量はTotalEnumValues - AmountOfCaseStatements
列挙値ごとであり、ステートメント自体ですべての列挙が考慮されているわけではありません。列挙型に少なくとも100のエントリが含まれていると、100以上のコンパイラ警告が発生する可能性があります。
私はこれに対応するためにif/elseをよく使用しましたが、複数のエントリの列挙値をチェックするとき(列挙の目的は一般にそれを補完する条件付きロジックを必要とするため、正直なところ非常にまれです)、私は常にswitch / caseを使用する傾向があります。これは、見た目が美しいためです(とにかく、if / elseステートメントにコンパイルされたとしても;))
それで、この警告をオフにすることは可能ですか?もしそうなら、どのように?