Say in einem Header, die ich selbst nicht lesen will, aber was ich bin, ich habeWie erhält man die Definition eines Makros als String-Literal?
#define A B
#define B C
Jetzt
#define STR(name) # name
definiert einen Makro, das mir den Namen eines Makros gibt als eine Zeichenfolge und
definiert ein Makro, das mir die vollständige Erweiterung eines Makros als Zeichenfolge gibt. So
cout << STR(A) << EXP_STR(A) << endl;
wird AC
drucken.
Gibt es eine Möglichkeit, "B"
von A
mithilfe einiger Makros zu erhalten?
Ich bin mir nicht sicher. Ich glaube, das ist nicht möglich, weil die Token-Erweiterung in C funktioniert. Das ist eine sehr gute Frage. – fuz
Es ist eine ausgezeichnete Frage, aber ich bin mir fast sicher, dass dies nicht möglich ist, hoffe jemand weiß, ob es ist, und wenn nicht, dann eine gute Erklärung. –
mögliches Duplikat von [Vermeidung einer doppelten Makrosubstitution im C-Preprozessor] (http://stackoverflow.com/questions/27533994/avoiding-a-double-mac-substitution-in-the-c-pre-processor) – this