E 'possibile definire una macro C/C++ "BUILD(a, i)
" che si espande in "x[0], x[1], x[2], ..., x[i]
"? Come inEspansione ricorsiva macro in sequenza
#define BUILD(x, 0) x[0]
#define BUILD(x, 1) x[0], x[1]
#define BUILD(x, 2) x[0], x[1], x[2]
...
Sembra che BOOST_PP_ENUM_PARAMS potrebbe fare il lavoro. Suppongo che potrei solo includere la spinta, ma sono interessato a sapere come e perché funziona, qualcuno può spiegare?
desidero chiamare una funzione che prende f(int, ...)
N int argomenti x[i]
, 0 < = i < N. Se N è noto per essere ceil(sizeof(A)/sizeof(B))
. Quindi, sfortunatamente, non posso usare vararg o template.
correlato: http://stackoverflow.com/questions/824639/variadic-recursive-preprocessor-macros-is-it-possible/893684 –
Quale problema stai veramente cercando di risolvere? vale a dire. per cosa sarà usato il risultato di questa macro? L'utilizzo potrebbe essere leggermente modificato per consentire una soluzione di template (dove è possibile la ricorsione)? –
Vedere la mia ultima modifica. –