J'essaie de comprendre comment je peux concaténer un #define
'd int à une #define
' d string en utilisant le préprocesseur C. Mon compilateur est GCC 4.1 sur CentOS 5. La solution devrait également fonctionner pour MinGW.
Je voudrais ajouter un numéro de version à une chaîne, mais la seule façon de le faire fonctionner est de faire une copie du numéro de version défini comme des chaînes.
La chose la plus proche que j'ai pu trouver était une méthode pour citer des arguments de macro, mais cela ne fonctionne pas pour #define
s
Cela ne fonctionne pas.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Il ne fonctionne pas sans #
s soit parce que les valeurs sont des nombres et il se développerait à "/home/user/.myapp" 2 6
, ce qui est valide C .
Cela fonctionne, mais je n'aime pas avoir des copies des définitions de version parce que j'en ai également besoin en tant que nombres.
#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