Trabajando con un marco de prueba de unidad, me encontré con una situación en la que me gustaría probar los argumentos de macro. Dicho simplemente, me gustaría expandir la macro FOO(x)
de modo que FOO(int)
sería short
y FOO(anything_else)
sería long
.¿Puedo reemplazar condicionalmente los argumentos del preprocesador?
Con plantillas C++, por supuesto, esto no es un problema. Pero aquí necesito un reemplazo de token real, no solo un typedef
. Es decir. FOO(char) FOO(char) i;
debe ser una definición válida igual a long long i;
.
El último estándar C tiene una función donde el texto de reemplazo de una macro puede depender del tipo de expresión del primer argumento. Puedes usar esto como un bloque de construcción. –
¿Has echado un vistazo a boost.pp y si puedes hackear algo junto con él? – PlasmaHH
@StefanMajewsky: ¿Te estás refiriendo a Genéricos, creo? – dirkgently