2010-10-28 23 views
3

J'ai une déclaration dans mon code:C1017 d'erreur fatale: integer invalide expression constante

 
#if DEBUG==0 

cela fonctionne bien dans gnu g ++, mais il échoue dans VC++. Quelqu'un peut-il expliquer ce qui ne va pas avec cela.

J'ai déjà lu l'aide msdn sur ce sujet. donc, si le débogage est défini comme 1 alors ceci est faux i.e.0, donc cela devrait fonctionner et de même si debug = 0

Quelqu'un peut-il suggérer comment corriger ceci. Mon code doit être compilé à la fois sous linux et gagner.

Merci

+1

Fonctionne pour moi Visual Studio 2008 et 2010, que DEBUG soit indéfini, 0 et 1. Je ne reçois cette erreur que si elle est définie mais pas définie sur quelque chose, par exemple '#define DEBUG' ou' -DDEBUG' mais aucune valeur. – Rup

+0

Merci, cela a fonctionné. Il a été défini mais pas défini. – user333422

Répondre

0

laisser comme:

#if DEBUG 

Bien que je dois ajouter que généralement un vérifie si DEBUG est défini, pas si elle est 1. Pour vous dire simplement déclarer:

#define DEBUG 

Cochez s'il n'est pas défini avec:

#ifndef DEBUG 
+1

Je sais, mais ce n'est pas mon code. Je ne fais qu'inclure le fichier d'en-tête de quelqu'un dans mon code qui a cette déclaration et je ne peux pas le changer. – user333422

+0

Il suffit de faire un #ifdef DEBUG suivi immédiatement de #if DEBUG et dans l'autre de #undef DEBUG afin que finalement DEBUG reste toujours défini si le débogage est en effet et non défait comme il le serait normalement. +1 à Rup pour l'idée. :) – Neil