C语言stdarg头文件(stdarg.h)中va_arg宏的用法及代码示例。
用法:
type va_arg (va_list ap, type)
检索下一个参数
每次对该宏的调用都会修改状态ap这样,对该宏的下一次调用将扩展到其评估结果之后的参数。
注意va_arg无法确定传递给函数的参数的实际类型,但使用传递的任何类型作为type宏参数作为其类型。
还要注意va_arg既不能确定检索到的参数是否是传递给函数的最后一个参数(即使它是该列表末尾的元素)。该函数的设计方式应使得可以通过命名参数或已读取的其他自变量的值以某种方式推断参数的数量。
参数
返回值
返回当前附加参数作为类型的表达式type。示例
/* va_arg example */
#include <stdio.h> /* printf */
#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
int FindMax (int n, ...)
{
int i,val,largest;
va_list vl;
va_start(vl,n);
largest=va_arg(vl,int);
for (i=1;i<n;i++)
{
val=va_arg(vl,int);
largest=(largest>val)?largest:val;
}
va_end(vl);
return largest;
}
int main ()
{
int m;
m= FindMax (7,702,422,631,834,892,104,772);
printf ("The largest value is: %d\n",m);
return 0;
}
这FindMax函数将要获取的其他参数数量作为其第一个参数。检索第一个附加参数并将其用作比较的初始参考,然后在循环中检索其余的附加参数并进行比较以返回最大的参数(在本例中为
892
)。输出:
The largest value is: 892 |
相关用法
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C va_arg function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。