Ich versuche herauszufinden, wie ich a verketten kann #define
‘d int zu a #define
‘d Zeichenfolge mit der C Präprozessor. Mein Compiler ist GCC 4.1 auf CentOS 5. Die Lösung sollte auch für MinGW funktionieren.
Ich möchte eine Versionsnummer an eine Zeichenfolge anhängen, aber die einzige Möglichkeit, dies zum Laufen zu bringen, besteht darin, eine Kopie der Versionsnummer zu erstellen, die als Zeichenfolgen definiert ist.
Das nächste, was ich finden konnte, war eine Methode zum Zitieren von Makroargumenten, aber es funktioniert nicht #define
s
Dies funktioniert nicht.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Ohne geht es nicht #
s entweder, weil die Werte Zahlen sind und es erweitert werden würde "/home/user/.myapp" 2 6
was nicht gültig ist C.
Das funktioniert, aber ich mag es nicht, Kopien der Versionsdefinitionen zu haben, weil ich sie auch als Zahlen brauche.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MAJOR_VER_STR "2"
#define MINOR_VER_STR "6"
#define MY_FILE "/home/user/.myapp" MAJOR_VER_STRING MINOR_VER_STRING
Mögliches Duplikat von Convert a preprocessor token to a string
– Ciro Santilli OurBigBook.com
5. Oktober 2015 um 13:00 Uhr