J'ai une bibliothèque avec plusieurs macros, elle compile bien sous AIX, mais maintenant j'ai besoin de compiler le même code et il semble que les macros se soient arrêtées pour fonctionner. Je continue à recevoir le message:Macro arrêtée pour la compilation sous Linux
error: pasting "::" and "EVENT_DATA" does not give a valid preprocessing token.
est-il un moyen de faire le C++ préprocesseur sur les actes de Linux comme sur aix. J'utilise g ++ sous linux et xlc_r sous AIX.
Voici l'une des macros.
#define E_TRA_INMOD(MName, Comp) \
static const ES_TracMg::ES_TracComps ES_TracComp = \
ES_TracMg::##Comp; \
static char* ES_Mod_Namp = MName; \
static unsigned long ES_SerMas = \
ES_TracMg::m_MServ[ES_TracMg##Comp];
Je l'appelle comme E_TRA_INMOD("Error", EVENT_DATA);
L'erreur est:
error: pasting "::" and "EVENT_DATA" does not give a valid preprocessing token.
Qu'est-ce que le message d'erreur? Ou qu'est-ce que vous obtenez et vous n'aimez pas? –
Le message d'erreur est: error: coller "::" et "EVENT_DATA" ne donne pas de jeton de pré-traitement valide. – Lefsler
vous pouvez utiliser le programme 'cpp' pour voir vos sources après prétraitement – ShPavel