Положить цикл внутри макроса C
Я ищу способ преобразовать следующую структуру функции в макрос. Я знаю это'Это глупый и бессмысленный пример, но он иллюстрирует суть, поскольку я не могу выдать свой настоящий исходный код.
int foo(int x, int y)
{
do
{
--x;
++y;
}while(x > y);
return x * y; //note that x and y have changed values here.
}
Чтобы я мог вызвать функцию в main или какую-то другую функцию, например, так:
int next_x = foo(x,y);
Я не могу получить синтаксис 100% правильный здесь. Это моя неудачная попытка:
#define FOO(x,y) \
( \
do \
{ \
--x; \
++y; \
}while(x < y), \
x \
)
Обоснование для х в конце концов, чтобы я мог, теоретически, быть в состоянии сделать это
int next_x = FOO(x,y);
но вместо этого я получаю синтаксическую ошибку иЯ не уверен, почему. Любая помощь будет оценена.
===============================================
Дополнительная информацияЯ также должен отметить, что у меня есть другие макросы, которые соответственно структурированы:
#define INIT(x,y)
(
x = //something,
y = //something
)
#define NEXT_INT(x,y) \
( \
INIT(x,y), \
get_next_num(x,y) \ //Note, this is an inline function call , not a macro.
)
#define NEXT_FLOAT(x,y,temp) \
( \
temp = NEXT_INT(x,y), \
temp ? temp * 1.23456 : FLT_MIN \
)
И так, я могу и сделал следующее:
float my_flt = NEXT_FLOAT(x,y,temp);