web-dev-qa-db-fra.com

# Définitions automatiques selon la configuration Debug / Release dans Visual Studio

J'ai une sortie de débogage dans mon programme comme ceci:

#define DEBUG
...
#ifdef DEBUG
    std::cout << "[RE_words] " << m_re << std::endl;
#endif

et DEBUG est défini manuellement dans mon programme. Je commente toujours la ligne lorsque je crée une version finale. Dans Visual Studio, il existe également des configurations pour les versions Debug vs Release qui gèrent la ligne de commande, etc. utilisées pour la compilation. Puis-je également utiliser la configuration "Debug" pour définir automatiquement DEBUG au compilateur? Comment?

35
Felix Dombek

Visual Studio définit automatiquement le symbole _DEBUG pour les versions de débogage (et NDEBUG pour les versions sans débogage).

Pour ce faire, vous pouvez également accéder aux paramètres du projet -> propriétés de configuration -> C/C++ -> préprocesseur et modifier manuellement les définitions de préprocesseur.

Voir également:
Cette réponse explique plus en détail les différences entre _DEBUG et NDEBUG.
Cette réponse explique le but du symbole NDEBUG et s'il est défini ou non par la norme.

68
Jan Holecek

Utilisation _DEBUG. Visual C++ définit cela pour une configuration de débogage. Consultez les directives du préprocesseur pour la configuration de débogage dans la boîte de dialogue des propriétés de votre projet.

8
Moo-Juice

Moi aussi, je pensais que je devais simplement regarder la propriété du préprocesseur et supprimer _DEBUG. Visual Studio essaie de vous aider en définissant _DEBUG si vous sélectionnez l'une des options de bibliothèque d'exécution de débogage.

Sur la page de propriétés du projet Propriétés de configuration\C/C++\Génération de code l'option sélectionnée pour Bibliothèque d'exécution affecte plusieurs définitions. Lors de la sélection d'une bibliothèque de débogage (/MTd ou /MDd ) le _ DEBUG define is set.

Voir MSDN/MD,/MT ... pour plus d'informations sur les commutateurs. Plusieurs définitions sont définies en fonction de ces options. Ils sont assez invisibles lorsque vous essayez de trouver qui définit un #define avant même d'inclure des fichiers d'en-tête !!

3
Quijote

Oui, vous devriez vérifier la page des options du projet, Compiler-> Options de compilation avancées. Cependant, VS par défaut définit automatiquement la directive DEBUG pour le mode Debug.

0
Nickolay Olshevsky