'possibile scrivere una macro preprocessore tali da dover trasformare un numero variabile di argomenti in chiamate di funzione successive, comeC Macro espansione in funzione più chiamate
MAP(f, 1, 2, 3, ..., n)
in
f(1); f(2); f(3); ... f(n);
Così lontano, ho seguito, che sembra funzionare:
#define MAP(f, t, ...) \
{\
t __varlist[] = {__VA_ARGS__};\
for(int i = 0; i < sizeof(__varlist)/sizeof(t); i++)\
f(__varlist[i]);\
}
Si noti che questa macro tak es un parametro di tipo in modo che possa essere un po 'più utile.
C'è un modo per farlo senza dichiarare un temporaneo? O non importa, perché il compilatore è così intelligente da capire tutto? Sono una specie di nuovo a C.
Se non c'è modo di farlo in un solo passaggio avrete bisogno di più di pre-processore passa. http://en.wikipedia.org/wiki/M4_(computer_language) –
@JohnSmith è ovviamente possibile se generi ancora più confusione ...;) – Gleno
Non è ovvio per me dato che non so tutto del pre processore, quindi il qualificatore if. Sembra che entrambi i modi facciano un pasticcio ragionevole: P –