C/C++で警告レベルを高くしていると、意外なところで引っかかる。
自分で書いたモノならいくらでも直すのだが、他のライブラリや、IDEが勝手に作ったコードなんかの場合できる限り触りたくない。自分の管理下にないコードをいじると、アップデートが入ったとき修正箇所が多くなり大変である。
よく知られた方法として、
#pragma warning (disable : 4996 )
は特定の警告だけを無視できるが、そうではなく、特定の「箇所」だけに対してそれを行いたい。
触りたくないから触らないで居ると結局は直せない警告に埋もれて重要な警告を見落とす可能性が出てくる。
以下のコードは、VC++2012で/W4でコンパイルすると、
warning C4100: 'B' : 引数は関数の本体部で 1 度も参照されません。
だけが表示される。
#pragma warning(push) #pragma warning(disable:4100) void function_nouse_arg_A(int A){ printf("hello world!"); } #pragma warning(pop) void function_nouse_arg_B(int B){ printf("hello world!"); }
勿論普通はこんなことは行うべきではない。あくまで、警告に対応できない(すべきでない)合理的理由がある場合にだけ用いるべきだ。