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

Друзья, помогите пожалуйста разобраться У меня есть шаблонная функция: template<ArgumentsTypes Args> void CallFunc(class*

SomeProp, ArgumentsTypes Args...)
{
CallOtherFunc(SomeProp, ConvertArg(Args)...);
}

Как мне ее представить через макрос? Я пытаюсь записать таким образом:
#define CallMacro(SomeProp, ...) CallOtherFunc(SomeProp, ConvertArg(__VA_ARGS__) )
Но есть ошибка в ConvertArg, так как ConvertArg принимает только один аргумент.

12 ответов

20 просмотров
Дмитрий-Сергеев Автор вопроса

В макросе мне судя по всему нужно каким-то образом пройтись по каждому аргументу в VA_ARGS, вызвать для него ConvertArg() и вернуть новые значение

Дмитрий Сергеев
В макросе мне судя по всему нужно каким-то образом...

Боюсь просто вызвать для каждого аргумента vararg макроса не получится Люди придумывают обход через создание кучи макросов, которые вызывают другие макросы, глянь, может помочь И зачем нужно через макрос, если работает через шаблоны?

Дмитрий-Сергеев Автор вопроса
Feskow Feskow
Боюсь просто вызвать для каждого аргумента vararg ...

Это долгая история почему, но в один момент выяснилось, что шаблоны очень много занимают места и используют повторяющийся код, что не удобно. Понял, спасибо за инфу. Похоже через макросы такое красиво сделать невозможно)

Feskow Feskow
Боюсь просто вызвать для каждого аргумента vararg ...

типа: Перегрузка0(...) Перегрузка1(ARG, ...) ConverArg(ARG) Перегрузка2(ARG, ...) ConverArg(ARG), Перегрузка1(__VA_ARGS__) Перегрузка3(ARG, ...) ConverArg(ARG), Перегрузка2(__VA_ARGS__) ВыбратьПерегрузку(...) /* реализация */ CallMacro(SomeProp, ...) CallOtherFunc(SomeProp, ВыбратьПерегрузку(__VA_ARGS__) )

Дмитрий-Сергеев Автор вопроса
Feskow Feskow
типа: Перегрузка0(...) Перегрузка1(ARG, ...) Conv...

Интересно, что же мне делать, если аргументов могут быть сотни) Спасибо за информацию, буду копать дальше

Дмитрий Сергеев
Интересно, что же мне делать, если аргументов могу...

автогенерировать как и сами функции с сотней аргументов

Дмитрий-Сергеев Автор вопроса
Feskow Feskow
типа: Перегрузка0(...) Перегрузка1(ARG, ...) Conv...

Кстати, еще одна проблема - вернуть новые (сконвертированные) значения обратно) К слову, новые значения должны быть других типов. В общем задача макросами не реализуемая по видимому :)

Дмитрий-Сергеев Автор вопроса
Егор (Дима)
автогенерировать как и сами функции с сотней аргум...

автогенерировать макросы? Не слышал об этом

Посмотри в бусте. Там есть либа для макросни и обхода аргументов и т.д.

Дмитрий-Сергеев Автор вопроса
Слава
Посмотри в бусте. Там есть либа для макросни и обх...

Как она называется интересно) буст большой. Можешь примерно название сказать как называется?

Слава
Boost Preprocessor

Но это очень весело отлаживать. Так что как знаешь

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта