我正在尝试编写一个宏,它返回多个整数中的最小值。当我编译以下代码时,它会抛出一个“预期表达式”的错误。我不知道哪里错了。有谁能指出这段代码的问题吗?
#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;
}
我对如何使用宏进行操作很感兴趣。
()
之间不应该有空格。在参数列表中,宏参数不能放在额外的()
中。 - Jens Gustedt