Konvertieren einer #definierten Konstanten Zahl zu einem string
Habe ich eine Konstante definiert:
#define MAX_STR_LEN 100
Ich versuche, dies zu tun:
scanf("%" MAX_STR_LEN "s", p_buf);
Aber natürlich nicht funktioniert.
Was Präprozessor-trick verwenden können, um zu konvertieren der MAX_STR_LEN numerica in einen string damit ich Sie in die oben scanf-Aufruf ? Grundsätzlich:
scanf("%" XYZ(MAX_STR_LEN) "s", p_buf);
Was soll XYZ() sein ?
Hinweis: ich kann natürlich tun, "%100s" nicht direkt, aber das Niederlagen der Zweck. Ich kann auch #define MAX_STR_LEN_STR "100", aber ich hoffe auf eine elegantere Lösung.
#define f(x) #x
wird Vorverarbeitenf(foo)
in"foo"
- Vielleicht möchten Sie sich auf meine Antwort an stackoverflow.com/questions/5256313/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
#
preprocessing-Betreiber. Dieser operator funktioniert nur bei der makro-expansion, so müssen Sie einige Makros, um zu helfen. Weitere, durch Besonderheiten, die in der makro-Ersatz-Algorithmus, brauchen Sie eine Schicht der Dereferenzierung. Das Ergebnis sieht wie folgt aus: