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);}

相關詞條

熱門詞條

聯絡我們