Supongamos que tengo la siguiente macro:cómo redefinir una macro utilizando su definición anterior
#define xxx(x) printf("%s\n",x);
Ahora bien, en ciertos archivos que desea utilizar una "mejorada" versión de este macro sin cambiar su nombre. La nueva versión explora la funcionalidad de la versión original y hace algo más de trabajo.
#define xxx(x) do { xxx(x); yyy(x); } while(0)
Por supuesto, esto me da la advertencia redefition pero ¿por qué recibo el mensaje 'xxx' no fue declarado en este ámbito? ¿Cómo debería definirlo correctamente?
EDIT: de acuerdo con este http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html debería ser posible
Esa página macros autorreferenciales está describiendo las reglas evitando la recursión infinita de la sustitución de macro. No significa que pueda definir una macro para que signifique más de una cosa. –