C, найдите промежуточное значение определения - PullRequest
0 голосов
/ 16 марта 2020

Учитывая следующее определение:

#define foo bar
#define bar 2

#define reg_bar 4

Я пытаюсь создать макрос, который задает определение foo, найдите значение define reg_bar, 4 .

Я пробовал это:

#define foo_bar(value) reg_##value

foo_bar(foo) 

Но это не работает, так как возвращает reg_foo.

И это

#define foo_bar(value) reg_##value
#define foo_bar_2(value) foo_bar(value)

foo_bar_2(foo) 

Но это все еще не ' не работает, так как возвращает reg_2

Есть ли что-нибудь сделать, только с макросом и препроцессором?

Спасибо за помощь:)

1 Ответ

0 голосов
/ 16 марта 2020

К сожалению, нет. Не существует такой вещи, как «промежуточное значение». Последовательность токенов либо расширена, либо нет; ## подавляет расширение, но нет ничего, что подавляло бы «часть» расширения.

...