Czy można zdefiniować makro C/C++ "BUILD(a, i)
", które rozwija się do "x[0], x[1], x[2], ..., x[i]
"? Podobnie jak w przypadku:Ekspansja cykliczna makra do sekwencji
#define BUILD(x, 0) x[0]
#define BUILD(x, 1) x[0], x[1]
#define BUILD(x, 2) x[0], x[1], x[2]
...
Wygląda na to, że BOOST_PP_ENUM_PARAMS może wykonać zadanie. Przypuszczam, że mogłem po prostu #include boost, ale jestem zainteresowany wiedzą jak i dlaczego to działa, każdy może wyjaśnić?
ja jak wywołanie funkcji f(int, ...)
który zajmuje N int argumentów x[i]
, 0 < = I < N. gdzie N jest znany jako ceil(sizeof(A)/sizeof(B))
. Więc niestety nie mogę używać varargs lub szablonów.
pokrewne: http://stackoverflow.com/questions/824639/variadic-recursive-preprocessor-macros-is-it-possible/893684 –
Jaki problem naprawdę stara się rozwiązać? to znaczy. do czego będzie użyty wynik tego makra? Czy użycie może zostać nieco zmienione, aby umożliwić rozwiązanie szablonu (gdzie rekurencja jest możliwa)? –
Zobacz moją ostatnią zmianę. –