Illegal escape sequence avec macro C++

Résolu/Fermé
Gaeta78 - 6 mai 2008 à 10:59
 Gaeta78 - 6 mai 2008 à 17:45
Bonjour,
j'ai dans du code C++ les macros suivantes définies dans Macro.h:


#define M_Atl_Attribut(inouttype,attrname)\ \
inouttype attrname() const\
{\
return attrname##_;\
}\
\
int attrname(inouttype val)\
{\
attrname##_ = val;\
return TRUE;\
}

#define M_Atl_AttributDEF(type,identifiant) \
type identifiant() const; \
int identifiant(type val)

#define M_Atl_AttributIMPL(classe,type,identifiant)\ \
type classe::identifiant() const\
{\
return identifiant ## _;\
}\
\
int classe::identifiant(type val)\
{\
identifiant ## _ = val;\
return TRUE;\
}



Si j'utilise ces macros dans un cpp incluant Macro.h je me retrouve avec une erreur "error C2017: illegal escape sequence" lorsque j'appelle l'une des macros. Par exemple :
M_Atl_AttributIMPL(Atl_Torseur,RWCString,u) dans un cpp génère cette erreur.
Voyez vous une solution?
A voir également:

1 réponse

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
6 mai 2008 à 12:37
Salutations,

#define M_Atl_Attribut(inouttype,attrname)\ \

Pourquoi un double \ ?

Cela voudrait dire que le pré-compilateur doit effectivement insérer un caractère \, ce qui fait que la macro n'est pas continuée à la ligne suivante mais est seulement remplacée par un \ qui ne compile pas par le compilateur C.

M.
0
Merci pour cette réactivitée.
Par contre tu me fais remarquer qu'il y a dans mon message initial un faute de frappe.
Je n'ai bien qu'un "\" sur la ligne du #define
0
Je suis un mec très distrait!
Tu avais raison, il y avait bien un "\" planqué après le premier.
En effet ce second "\" était positionné après une énorme série d'espace (plusieurs centaines) qui mettais le slash pour le coup hors du champ de vision.
Le copier coller sur le forum à tout simplement virer ces espaces inutils!!

Merci de ton aide.
L'erreur était en effet évidante, encore fallait-il savoir où chercher non regarder ;)
0