Voici un petit programme C++ développé avec l’IDE Qt Creator :
#include <iostream> int main() { short A = 60000; std::cout << "A vaut " << A << "\n"; return 0; }
À priori, très simple mais qui ne fonctionne pas comme désiré. Le problème ? L’affectation du nombre 60000 dans un short signé.
Malheureusement, lors de la compilation de ce programme, aucun warning n’est émis !
Pour augmenter le niveau de warning, il suffit de modifier le fichier projet (.pro) et d’y ajouter la ligne suivante :
QMAKE_CXXFLAGS_WARN_ON += -Wconversion
Pour être informé d’un maximum de warnings, il serait même judicieux d’y ajouter le flag -Wextra, ce qui aboutirait à la ligne suivante :
QMAKE_CXXFLAGS_WARN_ON += -Wconversion -Wextra
En plus des problèmes de conversion, il peut également y avoir des problèmes lors du passage d’un type signé vers non-signée et vice-versa. Pour détecter ces problèmes, il faut utiliser le flag –Wsign-conversion.
D’une façon générale, il peut même être pratique de considérer les warnings comme des erreurs, afin de ne rien laisser passer. Pour ce faire, il faut ajouter le flag -Werror, ce qui abouti à la ligne suivante :
QMAKE_CXXFLAGS_WARN_ON += -Wconversion -Wextra -Wsign-conversion -Werror
Tags: Qt, Qt Creator