У меня есть два макроса - Macro1 (x, y) и macro2 (x, ...)
Я хочу для макро2 (x, a, b, c, c ...) , чтобы расширить в Macro1 (x, a), Macro1 (x, b), Macro1 (x, c),
Изменить:
in macro1 < /code> x - это класс, а Y - один из его участников, фактический макрос - это смещение (x, y), sizeof (x :: y) < /code> < /p>
edit2:
edit2:
//to expand other parts of expression before concatenation
#define JOIN(x, y) JOIN_(x, y)
#define JOIN_(x, y) x ## y
//counts amount of variadic arguments (max 10 args)
#define NARGS_(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
#define NARGS(...) NARGS_(_, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
//max 5 args
#define MAP_1(f, x, a) f(x, a)
#define MAP_2(f, x, a, b) f(x, a), f(x, b)
#define MAP_3(f, x, a, b, c) f(x, a), f(x, b), f(x, c)
#define MAP_4(f, x, a, b, c, d) f(x, a), f(x, b), f(x, c), f(x, d)
#define MAP_5(f, x, a, b, c, d, e) f(x, a), f(x, b), f(x, c), f(x, d), f(x, e)
#define MAP(f, x, ...) JOIN(MAP_, NARGS(__VA_ARGS__)) (f, x, __VA_ARGS__)
Подробнее здесь: https://stackoverflow.com/questions/795 ... dividually
C ++ Обработка каждого аргумента варидового макроса индивидуально [дублировать] ⇐ C++
Программы на C++. Форум разработчиков
1741832297
Anonymous
У меня есть два макроса - Macro1 (x, y) и macro2 (x, ...)
Я хочу для макро2 (x, a, b, c, c ...) , чтобы расширить в Macro1 (x, a), Macro1 (x, b), Macro1 (x, c),
Изменить:
in macro1 < /code> x - это класс, а Y - один из его участников, фактический макрос - это смещение (x, y), sizeof (x :: y) < /code> < /p>
edit2:
edit2:
//to expand other parts of expression before concatenation
#define JOIN(x, y) JOIN_(x, y)
#define JOIN_(x, y) x ## y
//counts amount of variadic arguments (max 10 args)
#define NARGS_(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N
#define NARGS(...) NARGS_(_, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
//max 5 args
#define MAP_1(f, x, a) f(x, a)
#define MAP_2(f, x, a, b) f(x, a), f(x, b)
#define MAP_3(f, x, a, b, c) f(x, a), f(x, b), f(x, c)
#define MAP_4(f, x, a, b, c, d) f(x, a), f(x, b), f(x, c), f(x, d)
#define MAP_5(f, x, a, b, c, d, e) f(x, a), f(x, b), f(x, c), f(x, d), f(x, e)
#define MAP(f, x, ...) JOIN(MAP_, NARGS(__VA_ARGS__)) (f, x, __VA_ARGS__)
Подробнее здесь: [url]https://stackoverflow.com/questions/79504939/c-processing-each-argument-of-variadic-macro-individually[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия