170 похожих чатов

Привет! Можно ли сделать define, который умеет в переменное число аргументов? Хочу,

чтобы строчка DECLARE(A, B, C) раскрывалась в следующее:
enum class Types: std::size_t { A, B, C };
const map<Types, std::string> mapa = {{Types::A, "A"}, {Types::B, "B"}, {Types::C, "C"}};
Но при этом число аргументов должно быть нефиксированным, то есть их может быть 3, может быть любое другое положительное число.
Гуглеж по инету сказал, что такое невозможно (ни через variadic, ни через __COUNTER__'ы), но вдруг за последние несколько лет что-то поменялось.

15 ответов

21 просмотр

#define DECLARE(...) enum class Types { __VA_ARGS__ };

Boost.PP такое умеет https://www.boost.org/doc/libs/1_74_0/libs/preprocessor/doc/index.html Но от этой технологии можно кукушкой поехать - отладка там крайне неприятная

Danya🔥
#define DECLARE(...) enum class Types { __VA_ARGS_...

А ну только там не будет разделения с запятой, сори

Посмотри как работают https://github.com/quicknir/wise_enum https://github.com/aantron/better-enums а можно просто их поюзать

Vlad
для этого добавили __VA_OPT__

Для того, чтобы не было разделения запятой?

https://godbolt.org/z/f8zjzK

Danya🔥
Для того, чтобы не было разделения запятой?

я неправильно понял, прошу прощения это чтобы не городить страшные конструкции для обработки края __VA_ARGS__, конечно

Ruzal-Ibragimov Автор вопроса
Vlad
https://godbolt.org/z/f8zjzK

Тут же надо Fки заводить руками)

Ruzal Ibragimov
Тут же надо Fки заводить руками)

заведите разок сколько надо, и пользуйтесь на здоровье как я понимаю, макросы рекурсивно не раскрываются, к сожалению или к счастью

Ruzal-Ibragimov Автор вопроса
Vlad
заведите разок сколько надо, и пользуйтесь на здор...

В общем-то спасибо, но хотелось бы для любого числа аргументов решать задачу)

Вам точно не будет достаточно библиотеки magic_enum для своей задачи?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта