Mit Präprozessor String erzeugen
-
Hallo,
folgendes, ich will aus den PROG_VERS0...2 Makros einen String in SW_VERSION stehen haben, bei unten gezeigten Werten will ich in SW_VERSION nachher den String "2.0.1" sehen. Ich kämpfe hier schon mit den token pasting Operatoren (##), aber bekomme die Zahlen nicht in den String. Das höchste der Gefühle war ein String der Form "PROG_VERS0.PROG_VERS1.PROG_VERS2", aber die Zahlen hat er nicht ersetzt.
Folgende Hilfsmittel sind verwendbar:
- Preprozessor
- beliebige Anzahl an Makros oder deren VerschachtelungDie Definition der 3 Zahlen in den Einzelmakros ist nicht verhandelbar, das Ergebnis in SW_VERSION auch nicht.
#define PROG_VERS0 2 #define PROG_VERS1 0 #define PROG_VERS2 1 #define SW_VERSION2 (v1, v2, v3) ????? tja wie? #define SW_VERSION SW_VERSION2(PROG_VERS0, PROG_VERS1, PROG_VERS2)
Ideen?
-
#define PROG_VERS0 2 #define PROG_VERS1 0 #define PROG_VERS2 1 #define STR(X) #X #define SW_VERSION2(v1, v2, v3) STR(v1) "." STR(v2) "." STR(v3) SW_VERSION2(PROG_VERS0,PROG_VERS1,PROG_VERS2)
-
Tschuldige, letzte Zeile muß natürlich die gleiche sein, wie bei Dir
-
Argl. Wenn man es sieht ist es immer so einfach.
Danke