_false) (x) op (y) ? (_true) : (_false)
#define IF_EQ(x, y, _true, _false) IF_OP(x, ==, y, _true, _false)
#define DEC(x) ((x) - 1)
#define EMPTY()
#define DELAY(...) __VA_ARGS__
#define LIST_REPLICATE(num, amount) \
IF_EQ(num, 0, EMPTY(), \
(amount, DELAY(LIST_REPLICATE)(DEC(num), amount)) \
)
int arr[] = {
LIST_REPLICATE(19, 10)
};
но он просто разворачивает в
(19) == (0) ? () : ((10, LIST_REPLICATE(((19) - 1), 10)))
и уходит в ошибку, что не так делаю?
самокопирующийся макрос?
почитайте https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms
рекурсия)))000
Ок мои 40гб оперативки не выдержали)
Обсуждают сегодня