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 Verschachtelung

    Die 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


Anmelden zum Antworten