Próbuję dowiedzieć się, jak mogę połączyć #define„d int z #defineciągiem” za pomocą preprocesora C. Mój kompilator to GCC 4.1 na CentOS 5. Rozwiązanie powinno również działać dla MinGW.
Chciałbym dołączyć numer wersji do łańcucha, ale jedynym sposobem, w jaki mogę go uruchomić, jest zrobienie kopii numeru wersji zdefiniowanego jako ciągi.
Najbliższą rzeczą, jaką udało mi się znaleźć, była metoda cytowania argumentów makr, ale nie działa ona w przypadku #defines
To nie działa.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
To nie działa bez #s albo ponieważ wartości są liczbami i byłoby rozszerzyć do "/home/user/.myapp" 2 6, który nie jest ważny C .
To działa, ale nie lubię mieć kopii definicji wersji, ponieważ potrzebuję ich również jako liczb.
#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