Có thể xác định macro C/C++ "BUILD(a, i)
" mở rộng thành "x[0], x[1], x[2], ..., x[i]
" không? Giống như trongMở rộng đệ quy macro thành một chuỗi
#define BUILD(x, 0) x[0]
#define BUILD(x, 1) x[0], x[1]
#define BUILD(x, 2) x[0], x[1], x[2]
...
Có vẻ như BOOST_PP_ENUM_PARAMS có thể thực hiện công việc. Tôi cho rằng tôi chỉ có thể #include tăng, nhưng tôi quan tâm đến việc biết làm thế nào và tại sao nó hoạt động, bất cứ ai có thể giải thích?
Tôi muốn gọi một hàm f(int, ...)
mà mất N int luận x[i]
, 0 < = i < N. Trong đó N được biết đến là ceil(sizeof(A)/sizeof(B))
. Thật không may, tôi không thể sử dụng varargs hoặc mẫu.
liên quan: http://stackoverflow.com/questions/824639/variadic-recursive-preprocessor-macros-is-it-possible/893684 –
vấn đề gì được bạn thực sự cố gắng để giải quyết? I E. kết quả của macro này sẽ được sử dụng để làm gì? Việc sử dụng có thể được thay đổi một chút để cho phép một giải pháp mẫu (nơi đệ quy có thể)? –
Xem chỉnh sửa cuối cùng của tôi. –