<col>
<code>void va_start( </code>
<code> va_list arg_ptr </code>
<code>);</code>
在ansi下,除了va_list作参数外,还需要把第一个可选参数之前的参数也传进去:
<code> va_list arg_ptr, </code>
<code> prev_param </code>
当取得了所有的参数并进行处理后,要用va_end()将指针设置为null,参数很简单,就是va_list:
<code>void va_end( va_list arg_ptr );</code>
下面是一个带有可变参数的函数,用来模拟printf()函数。通过上面的两个函数就可以得到参数列表的指针了,接下来用vsprintf()函数把参数写进一个buffer中,然后把buffer输出出来,一切都搞定了。
<code>void simulateprintf(const char* pszformat, ...) { char buf[1024]; va_list arglist; va_start(arglist, pszformat); vsprintf(buf, pszformat, arglist); va_end(arglist); cout<<buf<<endl; } int main(int argc, char* argv[]) { simulateprintf("%d%s%d%d%s", 3, "hoho", 5, 65, "haha"); return exit_success; }</code>