【发布时间】:2026-01-24 02:25:01
【问题描述】:
在以下 C 程序中,我收到警告:
warning #2030: '=' used in a conditional expression.
究竟是什么问题,我该如何避免这种情况?遍历变量参数的正确方法是什么?
#include <stdio.h>
#include <stdarg.h>
int Sum(int a, int b, ...)
{
int arg;
int Sum = a + b;
va_list ap;
va_start(ap, b);
while(arg = va_arg(ap, int))
{
Sum += arg;
}
va_end(ap);
return Sum;
}
int main(int argc, char *argv[])
{
printf("%d\n", Sum(1, 2, 4, 8));
return 0;
}
【问题讨论】:
-
您的示例代码已损坏:如果
arg == 0则循环终止,但您从未向Sum()提供0参数;如果所有可选参数都具有相同的类型,最好传递一个数组而不是使用可变参数,并做一些宏魔术让它看起来不错:*.com/questions/1375474/variable-arity-in-c/… -
好点!但这不会影响问题。你的宏虽然不错,但显然是更好的选择!
标签: c function variables arguments