Sto cercando di capire come posso concatenare un #define
'd int a una #define
' d string utilizzando il preprocessore C. Il mio compilatore è GCC 4.1 su CentOS 5. La soluzione dovrebbe funzionare anche per MinGW.
Vorrei aggiungere un numero di versione a una stringa, ma l'unico modo per farlo funzionare è creare una copia del numero di versione definito come stringhe.
La cosa più vicina che ho trovato è stato un metodo per citare argomenti macro, ma non funziona per #define
s
Questo non funziona.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Non funziona senza le #
s sia perché i valori sono numeri e sarebbe espandono per "/home/user/.myapp" 2 6
, che non è valido C .
Funziona, ma non mi piace avere copie delle definizioni di versione perché ne ho bisogno anche come numeri.
#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