Передача 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))
Другие вопросы по тегам