Я пытаюсь написать макрос, который возвращает наименьшее значение нескольких целых чисел. Когда я компилирую следующий код, он генерирует ошибку «ожидаемое выражение». Я не знаю, что там не так. Может ли кто-нибудь указать на проблемы с этим кодом?C Макро с varargs
#define SMALLEST (nums, (ret_val), ...) \
do { \
int i, val; \
va_list vl; \
va_start(vl,nums); \
(*ret_val) = va_arg(vl, int); \
for (i = 1; i < nums; i++) \
{ \
val=va_arg(vl, int); \
if ((*ret_val) > val) \
(*ret_val) = val; \
} \
va_end(vl); \
} while(0)
int main()
{
int nums = 3;
int ret_val = 0;
SMALLEST(nums, &ret_val, 1, 2, 3);
return 0;
}
Мне просто интересно, как это сделать с помощью макроса.
Ваш синтаксис для макросов неверен. Между именем макроса и '()' не должно быть пробела. Параметры макроса в списке параметров не могут быть помещены в дополнительные '()'. –