¿Alguien sabe de alguna magia de preprocesador C99 que permite crear una cadena que consta de otra cadena repetida N veces?C macro de preprocesador para devolver una cadena repetida un cierto número de veces
E.g.
STRREP("%s ", 3)
convierte
"%s %s %s "
después del procesamiento previo.
La única cosa que podría pensar en mí fue algo como esto
#define STRREP(str, N) STRREP_##N(str)
#define STRREP_0(str) ""
#define STRREP_1(str) str
#define STRREP_2(str) str str
#define STRREP_3(str) str str str
...
que funciona bien, pero es feo como tengo que definir una macro para cada longitud de repetición manual. Quiero usarlo junto con macros variadic y la macro devuelve el número de argumentos de macros mostrados here.
Estoy bastante seguro de que no es posible. Vea otra pregunta aquí que es similar: http://stackoverflow.com/questions/319328/writing-a-while-loop-in-the-c-preprecessor – mattjgalloway
Gracias, @mattjgalloway. Usted parece tener razón. No hay forma de longitud de recursión variable en C99 puro utilizando el preprocesador. Entonces mi idea parece ser la única (¡fea!) Forma. – sonntam