サードパーティのライブラリで警告C4505を回避するにはどうすればよいですか?

私はいくつかのハッシュ関数に対してCrypto ++を使用するプロジェクトを持っています。最近、私は物事をきれいにして、MSVC
++で警告レベル4を使用することに決めました。

私のソースは次のようになります:

#pragma warning(push)
#pragma warning(disable: 4100) //Unreferenced formal parameter
#pragma warning(disable: 4244) //Conversion, possible loss of data
#pragma warning(disable: 4512) //Assignment operator could not be generated
#pragma warning(disable: 4127) //Conditional expression is constant
#pragma warning(disable: 4505) //Unreferenced local function has been removed
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#include 
#include 
#pragma warning(pop)

disable:4505 にもかかわらず、私はまだこの警告を受け取ります:

c:cppdevcryptopp561cryptoppmisc.h(548): warning C4505: 'CryptoPP::StringNarrow' : unreferenced local function has been removed

私のプロジェクトは構築されません。

これを回避するにはどうしたらいいですか?基本的には、第三者コードの警告を無効にしたいだけです。私はそうしないとエラーを修正するためにcryptopp自身を編集したくありません。

ベストアンサー

コンパイラは、コンパイルされたソースファイルの解析が終了した後でのみ、参照されていない関数を判別することができます。対応する
#pragma disable
をpush/popスコープの外に移動して、ファイルの最後に有効にします。

#pragma warning(push)
#pragma warning(disable: 4100) //Unreferenced formal parameter
#pragma warning(disable: 4244) //Conversion, possible loss of data
#pragma warning(disable: 4512) //Assignment operator could not be generated
#pragma warning(disable: 4127) //Conditional expression is constant
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#include 
#include 
#pragma warning(pop)
#pragma warning(disable: 4505) //Unreferenced local function has been removed

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です