Cosa fanno queste due macro????codice:#define PUSH(l, r) {*stack++ = (l); *stack++ = (r);} #define POP(l, r) {(r) = *--stack; (l) = *--stack;}
stack è un'array allocato dinamicamente di dimensione n
Cosa fanno queste due macro????codice:#define PUSH(l, r) {*stack++ = (l); *stack++ = (r);} #define POP(l, r) {(r) = *--stack; (l) = *--stack;}
stack è un'array allocato dinamicamente di dimensione n
#define PUSH(l, r){*stack++ = (l); *stack++ = (r);}
questa avanza stack all'elemento successivo poi lo mette uguale ad l. poi lo fa puntare a quello dopo e lo pone uguale ad r.
#define POP(l, r) {(r) = *--stack; (l) = *--stack;}
questa fa tornare stack indietro di uno e poi indica che r è uguale a quell'elemento (idem con l)
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
Tanto per chiarirti le idee, uno stack è una struttura dati che si comporta come una pila: l'elemento puntato è l'ultimo inserito, quello in cima alla pila, che è il primo ad essere estratto con un 'operazione di pop, push è invece l'operazione di inserimento.
![]()
ci sono delle operazioni native di C che si occupano di fare il pop e push?