I'm trying to figure out how I can concatenate a #define
'd int to a #define
'd string using the C Preprocessor. My compiler is GCC 4.1 on CentOS 5. The solution should also work for MinGW.
I'd like to append a version number onto a string, but the only way I can get it to work is to make a copy of the version number defines as strings.
The closest thing I could find was a method of quoting macro arguments, but it doesn't work for #define
s
This is does not work.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
It doesn't work without the #
s either because the values are numbers and it would expand to "/home/user/.myapp" 2 6
, which isn't valid C.
This does work, but I don't like having copies of the version defines because I do need them as numbers as well.
#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