Я намагаюся зрозуміти, як я можу об'єднати #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
Вона не працює без #
з яких тому , що значення числа і буде розширюватися "/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