Я хочу создать определение, используя расширение макроса. Ядерное определение должно содержать значение другого определения. :)
Пример:
#define ONE 1
#define TWO 2
#define MACRO(x, y) ...
...
#define MACRO_1_2 3
Мой вопрос: как мне разрешить / использовать значение определения в расширении макроса?
Я пытался использовать
#define TEST_MACRO_V2(x, y) TEST_MACRO_V2_"x"_"y"
, но я получаю следующую ошибку:
main. c: 18: 34: ошибка: 'TEST_MACRO_V2_' undeclared (первое использование в этой функции) #define TEST_MACRO_V2 (x, y) TEST_MACRO_V2_ "x" _ "y"
Мой тестовый код:
#include <stdio.h>
#define ONE 1
#define TWO 2
#define TEST_MACRO_V1(x, y) TEST_MACRO_V1_##x##_##y
#define TEST_MACRO_V1_ONE_TWO 3
//#define TEST_MACRO_V2(x, y) TEST_MACRO_V2_##('x')##_##('y') -> this version does not work
#define TEST_MACRO_V2(x, y) TEST_MACRO_V2_"x"_"y"
#define TEST_MACRO_V2_1_2 4
int main()
{
printf("Test Macro V1: %d\n", TEST_MACRO_V1(ONE, TWO));
printf("Test Macro V2: %d\n", TEST_MACRO_V2(ONE, TWO));
return 0;
}
Примечание: TEST_MACRO_V1 работает нормально. Мне нужно TEST_MACRO_V2.