Say a un colpo di testa, che io non voglio leggere me stesso, ma che io includere, hoCome ottenere la definizione di una macro come stringa letterale?
#define A B
#define B C
Ora
#define STR(name) # name
definisce una macro che mi dà il nome di qualsiasi macro come una stringa e
#define EXP_STR(name) STR(name)
definisce una macro che mi dà l'espansione completa di qualsiasi macro come stringa. Quindi
cout << STR(A) << EXP_STR(A) << endl;
stampa AC
.
C'è un modo per ottenere "B"
da A
utilizzando alcuni macro?
Non sono sicuro. Credo che questo non sia possibile a causa di come l'espansione del token in C funziona. Questa è un'ottima domanda. – fuz
È una domanda eccellente, ma sono quasi sicuro che ciò non sia possibile, spero che qualcuno sappia se lo è, e se non è una buona spiegazione. –
possibile duplicato di [Evitare una doppia sottomissione della macro nel pre-processore C] (http://stackoverflow.com/questions/27533994/avoiding-a-double-macro-subsitution-in-the-c-pre-processore) – this