Конкатенация int со строкой с помощью препроцессора C

Я пытаюсь понять, как я могу объединить #define 'd int в строку #define ' d с помощью препроцессора C . Мой компилятор - GCC 4.1 на CentOS 5. Решение также должно работать для MinGW.

Я хотел бы добавить номер версии в строку, но единственный способ заставить его работать - это сделать копию номер версии определяется как строки.

Самое близкое, что я смог найти, - это метод цитирования аргументов макроса, но он не работает для #define s

Это не работает.

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

] Он не работает без # s, потому что значения являются числами, и он будет расширяться до "/ home / user / .myapp" 2 6 , что недопустимо. C .

Это работает, но я не Мне нравится иметь копии определений версии, потому что они мне тоже нужны как числа.

#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
80
задан jww 27 February 2018 в 19:31
поделиться