新闻资讯
看你所看,想你所想

va_arg

va_arg

宏定义:type va_arg (va_list ap, type)

该宏用于变参数函式调用过程中,type是当前参数类型,调用该宏后,ap指向变参数列表中的下一个参数,返回下一个变参数里的参数,是一个类型为type的表达式。

基本介绍

  • 中文名:va_arg
  • 头档案:<stdarg.h>
  • 类别:C语言 宏

概要

#include <stdarg.h>
type va_arg(va_list ap, type);

描述

参数ap应该首先被宏va_start 或 va_copy初始化,但又必须在被宏va_end调用之前使用。每次调用va_arg都会改变ap值使得后续的参数值能被依次添加。参数type应该是一个类型名,并且用type*能够得到该类型的指针类型。如果type为空,或者type和实际参数不匹配, 那幺除了以下两种情况,这个宏的行为是未定义的。
1. 一个是带符号整型,另一个是与之对应的无符号整型,并且值可以被表达成这两种类型的任何一种;
2. 一个是空类型指针,另一个是字元类型指针。

返回值

第一次调用va_arg返回parmN之后的参数值,后续的调用依次返回剩下的参数值。parmN应为函式中“...”前最后一个参数值。

例子

实现:
#include <stdarg.h>#define MAXARGS 31/** execl is called by* execl(file, arg1, arg2, ..., (char *)(0));*/int execl(const char *file, const char *args, ...){    va_list ap;    char *array[MAXARGS +1];    int argno = 0;        va_start(ap, args);    while (args != 0 && argno < MAXARGS)    {        array[argno++] = args;        args = va_arg(ap, const char *);    }    array[argno] = (char *) 0;        va_end(ap);    return     execv(file, array);}

转载请注明出处海之美文 » va_arg

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com