Есть ли способ заставить препроцессор полностью оценить символы перед токенизацией?Оценка препроцессора силы при Tokenizing
Пример ввода и вывода GFR_SER_##token
, GFR_SER_INT
.
В качестве примера я пытаюсь выполнить метапрограммирование предварительного процессора с использованием Boost :: PP.
Для вставки строк, это довольно просто, как вы просто добавить уровень косвенности как:
#define str(s) xstr(s)
#define xstr(s) #s
Однако, это не работает для tokenizing, поскольку #define xtkz(t) ##t
является незаконным из-за символический синтаксис в начале выражения.
Я попытался с помощью BOOST_PP_IDENTIFY(s)
, который разрешает вход, но, к сожалению, приводит к токенизации из , что Boost, такие как вызов GFR_SER_BOOST_PP_IDENTIFY(s)
. Есть ли хорошие способы решения этой проблемы?