Có ai biết về bất kỳ ma thuật tiền xử lý C99 nào cho phép tạo chuỗi bao gồm một chuỗi N lần lặp lại không?Macro tiền xử lý C để trả về một chuỗi lặp lại một số lần nhất định
Ví dụ:
STRREP("%s ", 3)
trở thành
"%s %s %s "
sau khi tiền xử lý.
Điều duy nhất tôi có thể nghĩ đến bản thân mình là một cái gì đó như thế này
#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
...
mà hoạt động tốt, nhưng là xấu xí như tôi phải xác định một macro cho mỗi chiều dài lặp lại bằng tay. Tôi muốn sử dụng nó cùng với các macro variadic và macro trả lại số đối số macro được hiển thị here.
Tôi khá chắc chắn rằng nó là không thể. Xem một câu hỏi khác ở đây tương tự - http://stackoverflow.com/questions/319328/writing-a-while-loop-in-the-c-preprocessor – mattjgalloway
Cảm ơn bạn, @mattjgalloway. Bạn có vẻ đúng. Không có cách nào có độ dài đệ quy thay đổi trong C99 thuần túy sử dụng bộ tiền xử lý. Ý tưởng của tôi có vẻ là cách duy nhất (xấu xí!). – sonntam