/* 基本過程:
va_list arglist; //宣告乙個變數來轉換引數列表
va_start(arglist,format); //初始化變數
va_end(arglist); //結束變數列表,和va_start成對使用
可以根據va_arg(arglist,type)取出引數 其中type可以是int,char等等
或 va_start(arglist, format);
status = vsnprintf(buf, 1024, format, arglist); //有些編譯器要求寫成_vsnprintf
va_end(arglist);
vsnprintf()函式:
int vsnprintf (char *s, size_t size, const char *template, va_list ap)
本函式跟snprintf函式很類似,只是將引數的數目可變的,變成了乙個指標的列表。
*/#include
#include
void ******_va_fun(int start, ...)
while(nargvalue != -1);
return;
}int main(int argc, char* argv)
/*輸出結果:the 1 th arg: 100
the 1 th arg: 100
the 2 th arg: 200
va start和va end的使用
1 由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩 即使採用c 如果引數個數不能確定,也很難採用函式過載.對這種情況,有些人採用指標引數來解決問題.下面就c語言中處理不定引數數目的問題進行討論.2 下面是 裡面重要的幾個巨集定義如下 typedef char va list voi...
va start和va end使用詳解
本文主要介紹va start和va end的使用及原理。在以前的一篇帖子format messagebox 詳解 中曾使用到va start和va end這兩個巨集,但對它們也只是泛泛的了解。介紹這兩個巨集之前先看一下c中傳遞函式的引數時的用法和原理 1.在c中,當我們無法列出傳遞函式的所有實參的型...
va start和va end使用詳解
介紹這兩個巨集之前先看一下c中傳遞函式的引數時的用法和原理 1.在c中,當我們無法列出傳遞函式的所有實參的型別和數目時,可以用省略號指定參數列 void foo void foo parm list,這種方式和我們以前認識的不大一樣,但我們要記住這是c中一種傳參的形式,在後面我們就會用到它。2.函式...