Можно ли в дефайне такого вида:
#define USE_CODE(CODE, NAME) CODE
Для примера:
USE_CODE( a.NAME = b.NAME, attr );
a.attr = b.attr;
Более подробно, это для макроса FOREACH:
#define CNT_ARGS_PLACES(_1,_2,_3,_4,_5,_6,_7,_8,_9, n, ...) n
#define CNT_ARGS(...) CNT_ARGS_PLACES(__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1)
#define USE_CODE(CODE, NAME) CODE
#define FOREACH_1(CODE, NAME, ...) USE_CODE(CODE, NAME)
#define FOREACH_2(CODE, NAME, ...) USE_CODE(CODE, NAME) FOREACH_1(CODE, __VA_ARGS__)
#define FOREACH_3(CODE, NAME, ...) USE_CODE(CODE, NAME) FOREACH_2(CODE, __VA_ARGS__)
#define FOREACH_4(CODE, NAME, ...) USE_CODE(CODE, NAME) FOREACH_3(CODE, __VA_ARGS__)
#define FOREACH_WRAP_NUM(N, CODE, ...) FOREACH_##N(CODE, __VA_ARGS__)
#define FOREACH_NUM(N, CODE,...) FOREACH_WRAP_NUM(N, CODE, __VA_ARGS__)
#define FOREACH(CODE, ...) FOREACH_NUM(CNT_ARGS(__VA_ARGS__), CODE, __VA_ARGS__)
FOREACH( a.NAME = b.NAME;, attr1, attr2, attr3)
Или может готовые варианты уже есть?
Перемещено Shaman007 из desktop