警告 C4244 (データ損失の可能性) が抑制されていることを発見したばかりのプロジェクトがあります。一部の厄介な MS ヘッダーがこの警告を抑制し、そのヘッダーを含むすべての翻訳単位に対して抑制されたままになっているのではないかと強く疑っていますが、無数のヘッダーのどれに問題があるかはわかりません。
したがって、他のプログラミングの問題と同様に、バイナリ検索を実行して、現在の警告レベルを出力し、可能であればメインのプリコンパイル済みヘッダーで抑制された警告を出力したいと思います。
私がどのコンパイラディレクティブを使用するか、またはその情報を得るためにどのようなアプローチを取ることができるかを知っている人はいますか?
発信者がコントラクトに違反し、署名されたバイトの代わりに整数を送信しようとしたときに、ヘッダーで慎重に構築された型宣言がコンパイラの警告を出さないことがどれほど不快であるかはわかりません (これにより、私が解決しようとしている現在のバグ)。
考え?
ノート:
ソリューション全体で #pragma を検索すると、#pragma warning(disable:xxxx) とそれに続く #pragma warning(default:xxxx) のバランスの取れた宣言のみが表示されます。そして、それらのどれも 4244 を参照していません。
ソリューション全体で 4244 を検索すると、一致が返されません (その警告をオーバーライドしたり、含まれているライブラリやサブプロジェクトなどをオーバーライドしたりすることはありません)。
MS インクルード パス全体で 4244 を検索すると、呼び出し前に設定された #define シンボルに応じて、バランスが取れているか、ほぼバランスが取れているように見えるいくつかの参照が返されます。したがって、MSに問題があるという私の疑い(MSがヘッダーでずさんな作業をしているという以前の履歴と組み合わせて)。