va_list/va_start/va_end的使用
生活随笔
收集整理的這篇文章主要介紹了
va_list/va_start/va_end的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
va_list
鍵入以保存有關變量參數的信息
va_start
初始化變量參數列表
初始化ap以檢索參數paramN后面的附加參數。
調用va_start的函數在返回之前也應調用va_end。
參數不能是引用類型,也不能是與傳遞沒有參數的參數時產生的類型不兼容的類型。
/* va_start example */ #include <stdio.h> /* printf */ #include <stdarg.h> /* va_list, va_start, va_arg, va_end */void PrintFloats (int n, ...) {int i;double val;printf ("Printing floats:");va_list vl;va_start(vl,n);for (i=0;i<n;i++){val=va_arg(vl,double);printf (" [%.2f]",val);}va_end(vl);printf ("\n"); }int main () {PrintFloats (3,3.14159,2.71828,1.41421);return 0; }va_end
定義:
結束使用變量參數列表
執行適當的操作,以便于使用va_list對象ap檢索其附加參數的函數正常返回。
無論何時從該函數調用va_start,都應在函數返回之前調用該宏。
返回值:
none
實例:
/* va_end example */ #include <stdio.h> /* puts */ #include <stdarg.h> /* va_list, va_start, va_arg, va_end */void PrintLines (char* first, ...) {char* str;va_list vl;str=first;va_start(vl,first);do {puts(str);str=va_arg(vl,char*);} while (str!=NULL);va_end(vl); }int main () {PrintLines ("First","Second","Third","Fourth",NULL);return 0; }參考:
http://www.cplusplus.com/reference/cstdarg/va_start/
總結
以上是生活随笔為你收集整理的va_list/va_start/va_end的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 慎用Hyper-Threading Te
- 下一篇: sql server 分页