как я могу заставить препроцессор выполнять арифметику c в конкатенации?
Я пробовал:
#define DECL_FUNCT3(ch1, ch2) \
void funct_ ## ch1 ## _and_ ## ch2 ## _(void);
#define DECL_FUNCT2(ch1, ch2) DECL_FUNCT3(ch1, ch2)
#define DECL_FUNCT1(ch1, ch2) DECL_FUNCT2(ch1, ch2)
#define DECL_FUNCT(ch) DECL_FUNCT1(ch, ch+16)
DECL_FUNCT(0)
DECL_FUNCT(1)
Я хотел бы получить:
void funct_0_and_16_(void);
void funct_1_and_17_(void);
но я получаю:
$ gcc -E test.c
[...]
void funct_0_and_0+16_(void);
void funct_1_and_1+16_(void);
Возможно ли это?