Ich versuche herauszufinden, wie ich mit dem C- Präprozessor ein #define
'd int mit einem #define
' d-String verketten kann . Mein Compiler ist GCC 4.1 unter 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, sie 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 für #define
s
Das funktioniert nicht.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Es funktioniert nicht ohne die #
s entweder , weil die Werte Zahlen sind und es würde zu erweitern "/home/user/.myapp" 2 6
, die 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