Библиотека препроцессора Boost

У меня возникли проблемы с расширением до базового значения

# include <boost/preprocessor/cat.hpp>

#define REL_ITERATION_1 1
#define REL_FRAME_ITERATION(i) BOOST_PP_CAT(REL_ITERATION_, i)
#define REL_ITERATION_PARAMS_2 REL_FRAME_ITERATION(1)
#define REL_FRAME1(i)           BOOST_PP_CAT(REL_ITERATION_PARAMS_, i)
#define REL_FRAME2(i)           REL_ITERATION_PARAMS_##i
REL_FRAME1(2)
REL_FRAME2(2)

Вот результат.

BOOST_PP_CAT(REL_ITERATION_, 1)
1

Кто-нибудь знает, почему первый вызов не совпадает со вторым? Я думал, что разобрался с использованием препроцессора, но я просто не понимаю этого. :(


person Adrian    schedule 29.04.2013    source источник
comment
Как мне это принять? О, нажмите на галочку. Там написано, что я могу принять его через пару дней.   -  person Adrian    schedule 30.04.2013
comment
Слева от ответа есть зеленый символ галочки. Нажмите на нее. Кроме того, ознакомьтесь с stackoverflow.com/faq.   -  person pmr    schedule 30.04.2013
comment
Да, он не зеленый. Он становится зеленым, когда вы нажимаете на него. Но до завтра почему-то не пускают. Спасибо за ссылку.   -  person Adrian    schedule 30.04.2013


Ответы (1)


Не бери в голову. Я пропустил часть в документации, где говорится, что если он расширяется до макроса BOOST_PP_CAT(), он не будет его расширять.

Дох!

person Adrian    schedule 29.04.2013