Czy ktoś wie o jakiejkolwiek magii preprocesora C99, która pozwala na utworzenie ciągu składającego się z innego ciągu powtórzonego N razy?C Makro preprocesora do zwracania ciągu znaków powtarzanego określoną liczbę razy
E.g.
STRREP("%s ", 3)
staje
"%s %s %s "
po wyprzedzającym.
Jedyne co mogę myśleć o sobie było coś takiego
#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
...
który działa dobrze, ale jest brzydki jak muszę zdefiniować makro dla każdej długości powtarzania ręcznie. Chcę użyć go razem z makrami variadic i makro zwracając liczbę argumentów makra pokazanych here.
Jestem całkiem pewien, że to nie jest możliwe. Zobacz inne pytanie tutaj, które jest podobne - http://stackoverflow.com/questions/319328/writing-a-while-loop-in-the-c-preprocessor – mattjgalloway
Dziękuję, @mattjgalloway. Wydajesz się mieć rację. Nie ma możliwości zmiennej długości rekurencji w czystym C99 przy użyciu preprocesora. Tak więc mój pomysł wydaje się być jedynym (brzydkim!) Sposobem. – sonntam