Comment puis-je contourner l’avertissement C4505 dans des bibliothèques tierces?

J’ai un projet qui utilise Crypto ++ pour quelques fonctions de hachage. Récemment, j’ai décidé de nettoyer un peu les choses et d’utiliser le niveau d’avertissement 4 sur MSVC ++.

Voici à quoi ressemble ma source:

#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) 

Malgré disable: 4505 , je reçois toujours cet avertissement:

 c:\cppdev\cryptopp561\cryptopp\misc.h(548): warning C4505: 'CryptoPP::SsortingngNarrow' : unreferenced local function has been removed 

et mon projet ne construit pas.

Comment puis-je contourner cela? Fondamentalement, je voudrais juste désactiver l’avertissement pour le code tiers; Je ne veux pas éditer cryptopp lui-même pour corriger l’erreur si je peux éviter de le faire.

Le compilateur ne peut déterminer les fonctions non référencées qu’après avoir analysé le fichier source compilé. Déplacez le #pragma disable correspondant à #pragma disable hors de la scope push / pop afin qu’il soit toujours actif à la fin du fichier:

 #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 

Si vous avez juste besoin de quelques fonctions de hachage, créez un fichier source séparé avec 4505 désactivé pour inclure les en-têtes crapto et écrivez votre propre fichier d’en-tête pour définir les prototypes de fonctions que vous utilisez.