Передача BOOST_PP_DEC в другой макрос
Я пытаюсь сделать что-то вроде:
#define FOO( N ) Bar ## N ## _ Bar ## N - 1
Так сказать FOO( 2 ) = Bar2_Bar1
Проблема заключается в N-1
там. Препроцессоры не будут выполнять такую математику, но у boost есть удобный макрос BOOST_PP_DEC для уменьшения входных данных.
Так что, если я сейчас попробую следующее:
#define __FOO( N, N_MINUS_ONE ) BAR ## N _ ## Bar ## N_MINUS_ONE
#define FOO( N ) __FOO( N, BOOST_PP_DEC( N ) )
Я ожидал бы, что это сработает, но он вставляет имя макроса напрямую и не оценивает его.
Как ни странно, если я просто сделаю:
#define TEST( N ) BOOST_PP_DEC( N )
Вроде работает. Что мне здесь не хватает именно?
1 ответ
#define FOO( N ) BOOST_PP_CAT(Bar ## N ## _Bar, BOOST_PP_DEC(N))