Je suis nouveau à la programmation & J'ai trouvé ce code quand je passais par un livre. Je crois qu'il donne un exemple d'utilisation d'une macro assert() définie. Il ne compile pas sur code :: blocks 10.05. Je reçois des erreurs telles queen utilisant une simple assert() macro
- '#' est pas suivie d'un paramètre macro
- unterminated de #else
- dans la fonction 'int main()' 'ASSERT' n'a pas été déclaré dans ce champ
code:
#include<iostream>
#define DEBUG
#ifndef DEBUG
#define ASSERT(x)
#else
#define ASSERT(x)\
if(!(x))\
{\
cout<<"Error!!Assert"<<#x<<"failed\n";\
cout<<"on line"<<__LINE__<<"\n";\
cout<<"in file"<<__FILE__<<"\n";\
}\
#endif
using namespace std;
int main()
{
int x = 5;
cout<<"\nFirst assert.";
ASSERT(x==5);
cout<<"\nSecond assert.";
ASSERT(x!=5);
cout<<"\nDone."<<endl;
return 0;
}
Toute aide serait grandement appréciée. Merci d'avance.
Êtes-vous mettre une ligne vide avant #define assert (x) \ if (! (X)) \ ? Essayez de sortir la ligne vide si vous êtes. – irrelephant
Vous avez probablement une ligne vide après une ligne de définition de macro se terminant par une barre oblique inverse. Vous devez conserver vos lignes de définition de macro, en terminant chaque ligne par une barre oblique inverse. –