Здравствуйте, stalcer, Вы писали:
S>Возможно ли написать макросы, используемые вот так:
Используй символ '\' в конце строки для переноса. Можно делать многострочные макросы..
Нет. Мне нужен точно такой результат, какой я написал, т.е. чтобы сформировался и 'x' и 'y'. Причем 'x' — из певых аргументов макросов, а 'y' — из вторых.
Здравствуйте, stalcer, Вы писали:
S>Нет. Мне нужен точно такой результат, какой я написал, т.е. чтобы сформировался и 'x' и 'y'. Причем 'x' — из певых аргументов макросов, а 'y' — из вторых.
Т.е. оба одновременно и один из них содержал сумму min, а второй сумму max? Тогда это нужно было пояснить в вопросе.
Здравствуйте, dupamid, Вы писали:
D>Здравствуйте, stalcer, Вы писали:
S>>Нет. Мне нужен точно такой результат, какой я написал, т.е. чтобы сформировался и 'x' и 'y'. Причем 'x' — из певых аргументов макросов, а 'y' — из вторых.
D>Т.е. оба одновременно и один из них содержал сумму min, а второй сумму max?
да не , не надо никаких сумм ему.
ему надо чтобы было так:
M_BEGIN
M_ACTION(1, 2)
M_ACTION(3, 4)
// | |
// x y
M_END
// expand to:
//
// int x = 0
// + 1
// + 3
// ;
//
// int y = 0
// + 2
// + 4
// ;
> Тогда это нужно было пояснить в вопросе.
да уж вопрос не чётко поставлен
Здравствуйте, stalcer, Вы писали:
S>Здравствуйте, dupamid, Вы писали:
S>Нет. Мне нужен точно такой результат, какой я написал, т.е. чтобы сформировался и 'x' и 'y'. Причем 'x' — из певых аргументов макросов, а 'y' — из вторых.
А вот так?
#include <boost/preprocessor/repetition.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>
#include <boost/preprocessor/seq/elem.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#define M_ACTION(x, y) (+) (x) (y)
#define A(z, c, b) BOOST_PP_IF(c, BOOST_PP_SEQ_ELEM(0, b) BOOST_PP_SEQ_ELEM(2, b), BOOST_PP_SEQ_ELEM(0, b) BOOST_PP_SEQ_ELEM(1, b))
#define M_X(a, b) int x = 0 BOOST_PP_SEQ_FOR_EACH(A, 0, (a) (b));\
int y = 0 BOOST_PP_SEQ_FOR_EACH(A, 1, (a) (b));
M_X(
M_ACTION(1, 2),
M_ACTION(3, 4)
)
Раскрывается так:
int x = 0 + 1 + 3 ; int y = 0 + 2 + 4 ;
Или число секций M_ACTION должно быть не ограничено?