Immagino che la maggior parte di voi che ha lavorato con C/C++ abbia intuito come funziona il preprocessore (più o meno). L'ho pensato fino ad oggi, ma la mia intuizione è stata smentita. Ecco la storia:(Strambo?) Comportamento del preprocessore GCC
Oggi ho provato qualcosa, ma non riesco a spiegare il risultato. in primo luogo considerare il seguente codice:
#define A B
#define B A
A
B
Che cosa succede? Ebbene, il risultato dopo la compilazione con il flag -E 'questa:
A
B
Beh, ok, forse non quello che chiunque si aspetterebbe, ma è spiegabile. Immagino che il preprocessore abbia in qualche modo capito che c'è qualche problema, e non l'ha fatto.
La prossima cosa che ho provato è stato questo:
#define A B
#define B A C
#define C x
A
B
Ora per la, per me, risultato inspiegabile:
A x
B x
come è potuto succedere? Non riesco a capire un modo ragionevole di come sia successo. Il primo comando (#define A B) non può essere eseguito, in quanto A sarebbe sostituito da B e il risultato finale dovrebbe essere uguale per entrambi. Ma se non lo è, allora non è possibile che "A x" possa accadere!
La mia domanda: cosa mi manca? Ovviamente non conosco il modo esatto di come funziona il preprocessore. Conosci qualche fonte al riguardo?
E questo è il motivo per cui #defines ha bisogno di evitare ... – Goz
Sì, questo è un altro motivo .. Non intendo dire di non usarli affatto. Per alcuni compiti sono molto utili (e la via da percorrere io.m.o.). – George