Concatenate int a string usando el preprocesador C

Estoy tratando de descubrir cómo puedo concatenar una#define 'int a una#define 'd string usando laC Preprocesador. Mi compilador es GCC 4.1 en CentOS 5. La solución también debería funcionar para MinGW.

Me gustaría agregar un número de versión en una cadena, pero la única forma en que puedo hacer que funcione es hacer una copia del número de versión definido como cadenas.

o más cercano que pude encontrar fue un método para citar argumentos macro, pero no funciona para#defines

Esto no funciona.

#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER

No funciona sin la#s porque los valores son números y se expandiría a"/home/user/.myapp" 2 6, que no es válidoC.

Esto funciona, pero no me gusta tener copias de la versión definida porque también las necesito como números.

#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

Respuestas a la pregunta(3)

Su respuesta a la pregunta