Макросы C++ Добавление выражения к аргументам макроса с переменным числом аргументовC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Макросы C++ Добавление выражения к аргументам макроса с переменным числом аргументов

Сообщение Anonymous »

Можно ли создать макрос с переменным числом аргументов, который добавляет выражение ко всем аргументам? Например, если я пишу

Код: Выделить всё

MACRO(int, a, b, c)
Я хочу, чтобы его заменили на

Код: Выделить всё

int a, int b, int c
Если возможно, предложите решение без внешних библиотек.
Основная проблема:
Мне нужны части код, в котором происходит преобразование типов во время компиляции.
Поэтому я делаю что-то подобное:

Код: Выделить всё

struct Index {
Index(size_t i, size_t j) : iElem(i), iDof(j) {}
size_t iElem;
size_t iDof;
};

struct IndexOverride {
explicit IndexOverride(Index index) : iElem(index.iElem), iDof(index.iDof) {}
size_t iElem;
size_t iDof;
size_t extra;
};

#define MACRO(index, FunctionBody) { auto test = [&](IndexOverride Index) { FunctionBody; }; test(static_cast(index)); }
Теперь я могу указать с помощью макроса конкретные регионы, в которых меняется тип некоторого индекса:

Код: Выделить всё

Index index(2, 3);
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78698861/c-macros-add-expression-to-variadic-macro-arguments[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»