Знает ли кто-нибудь о магии препроцессора C99, позволяющей создать строку, состоящую из другой строки, повторяющейся N раз?
Например.
STRREP( "%s ", 3 )
становится
"%s %s %s "
после предварительной обработки.
Единственное, что я мог придумать о себе, это что-то вроде этого
#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
...
, которое работает хорошо, но некрасиво, поскольку мне приходится определять макрос для каждой длины повторения вручную. Я хочу использовать его вместе с макросами с переменным числом аргументов и макросом, возвращающим количество аргументов макроса, показанных здесь .