va_xxx: 處理不定長度的參數時所用。常用於分析程式的input command上。
因為老是忘記va_系列函示的使用法,所以乾脆在blog裡面記錄。
哪天想找說明時,應該會比較快回復記憶吧。
va_系列的函示基本上要先呼叫 va_start(),
最後以va_end()左結尾。中間可以插入va_xxx()的函示。(其實都是MACRO啦)
va_start就像是進入點一樣,初始了一個va_list的參數(於引數的第一欄)。第二欄就是用來放一串不固定參數所能夠確定的最後一個引數。
例如
foo(char* fmt, ...) //表示最後一個可以確定的引數是fmt
{
va_list ap;
va_start(ap, fmt)
va_xxx( )
va_end(ap);
}
PS:
type va_arg(va_list ap, type);
會取出ap接下來的參數並回傳(所以用來接應回傳值的變數要和引數type的型態相同)。
例如: d = va_arg(ap, int);
則d也要是整數型態才行。
沒有留言:
張貼留言