C庫巨集 type va_arg(va_list ap, type) 的 ap 檢索下一個引數函式型的引數列表。這並不確定是否檢索的引數是最後一個引數傳遞給函式。
以下是宣告va_arg()巨集。
type va_arg(va_list ap, type)
ap -- 這是額外的引數檢索狀態資訊 va_list 型別的物件。這個物件應已初始化由初始呼叫,va_start 前第一次呼叫va_arg。
type -- 這是一個不同的名稱。此型別的名稱作為該巨集展開的表達型別。
該巨集返回下一個額外的引數作為一個表示式的型別型別。
下面的例子演示了如何使用 va_arg() 巨集。
#include <stdarg.h> #include <stdio.h> int sum(int, ...); int main() { printf("Sum of 15 and 56 = %d ", sum(2, 15, 56) ); return 0; } int sum(int num_args, ...) { int val = 0; va_list ap; int i; va_start(ap, num_args); for(i = 0; i < num_args; i++) { val += va_arg(ap, int); } va_end(ap); return val; }
讓我們編譯和執行上面的程式,這將產生以下結果:
Sum of 15 and 56 = 71