J'ai couru dans le même problème que vous avez, il y a quelques années, celui de la mise au compilateur de niveau 4 avertissements pour attraper autant de problèmes potentiels que possible. À l'époque, j'avais un contrat de support avec Qt et je leur ai demandé pourquoi leur code générait tant d'avertissements. Leur réponse a été qu'ils n'ont jamais pensé que leur code compilerait sans aucun avertissement. Seulement que leur code fonctionnerait correctement.
Après plusieurs tentatives, j'ai commencé autour des fichiers d'en-tête Qt avec pragma pour désactiver les avertissements comme indiqué ci-dessous -
#pragma warning(push,3) // drop compiler to level 3 and save current level
#include <QString>
#include <QVariant>
#include <QStack>
#include <QLabel>
#include <QtGui/QTableWidget>
#pragma warning(pop) // restore compiler warning level
En le faisant de cette façon, vous compilez uniquement les fichiers d'en-tête Qt au niveau d'avertissement inférieur . Ou quel que soit le niveau requis pour se débarrasser des avertissements. Vous pouvez avoir des avertissements individuels qui montrent encore, donc vous pouvez augmenter le niveau d'alerte ou désactiver les avertissements individuels avec
#pragma warning(disable: 4700)
Certains fichiers de bibliothèque Boost ont également ce problème.
Je ne vois pas pourquoi une expression conditionnelle constante devrait poser problème. –
IMO, Si c'est constant, vous n'en avez pas besoin. Microsoft explication pour cet avertissement: http://msdn.microsoft.com/en-us/library/6t66728h%28VS.80%29.aspx – metdos