Supposons que je la macro suivante:Comment redéfinir une macro en utilisant la définition précédente
#define xxx(x) printf("%s\n",x);
maintenant dans certains fichiers que je veux utiliser une version « améliorée » de cette macro sans changer son nom. La nouvelle version explore les fonctionnalités de la version originale et fait plus de travail.
#define xxx(x) do { xxx(x); yyy(x); } while(0)
Bien sûr, me donne avertissement redefition mais pourquoi je reçois « xxx » n'a pas été déclarée dans ce cadre? Comment dois-je le définir correctement?
EDIT: selon cette http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html il devrait être possible
que les macros autoréférentielles page est décrit les règles empêchant la récursion infinie du macro-remplacement. Cela ne signifie pas que vous pouvez définir une macro pour signifier plus d'une chose. –