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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。