2013-02-21 1 views
4

Quand j'ai dans mon code un #ifdef comme cegris intellisense de Qt Creator sur #ifdef blocs _DEBUG même si la construction de débogage est sélectionné

#ifdef _DEBUG 
    printf("This is a debug build"); 
#endif 

grays Qt Creator sur le printf même si elle est une version de débogage, et quand je l'exécute "This is a debug build" est imprimé.

Il semble que l'intellisense ne voit pas les définitions de préprocesseur qui seront transmises au compilateur via la ligne de commande (c'est-à-dire -D_DEBUG) au lieu d'être définies dans les fichiers d'en-tête/source.

+0

Vous aurez envie de regarder cette réponse http://stackoverflow.com/a/8298770/159834 –

+0

Merci pour le lien. Je n'ai pas de fichier de configuration dans mon répertoire de projet. Comment puis-je le faire définir _DEBUG pour les versions de débogage uniquement, mais pas pour les versions de version? – sashoalm

+0

Il suffit de le créer. Je ne sais pas comment le faire conditionnellement sur le type de construction, cependant. –

Répondre

8

Les travaux suivants très bien dans mon dossier *.pro:

CONFIG(debug, release|debug):DEFINES += _DEBUG 

Modification du type de construction puis swaps également la zone grisées. J'utilise Qt5, cependant.

+0

Merci pour ce petit mais très utile pour moi un indice débutant Qt (Creator)! – mloskot

Questions connexes