GCC preprocessor + boost::preprocessor
От: nen777w  
Дата: 15.09.08 21:53
Оценка:
Вот такие макросы:

#define TEST_1(r, d, arg) \
    BOOST_PP_TUPLE_ELEM(2, 0, arg) BOOST_PP_TUPLE_ELEM(2, 1, arg)_UL() BOOST_PP_EXPR_IF(BOOST_PP_LESS_EQUAL(r,d), BOOST_PP_COMMA())
    
#define TEST_2(r, d, arg) \
    BOOST_PP_TUPLE_ELEM(2, 0, arg) BOOST_PP_TUPLE_ELEM(2, 1, arg)_UL() BOOST_PP_EXPR_IF(BOOST_PP_LESS_EQUAL(r,d), BOOST_PP_EMPTY())


Код:
TEST_1(a,b,c)
TEST_2(a,b,c)


MSVC++ 2005 /W4 — раскрываются отлично
XCode GCC — ругается на первую строчку

error: macro "BOOST_PP_EXPR_IIF" passed 3 arguments, but takes just 2


Причем дело тут видимо в том что по разному раскрывается BOOST_PP_COMMA().
Где не так? И что надо сделать что бы работал вариант с BOOST_PP_COMMA()
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.