这个是可变参数的用法。
va_list相关一般包含以下4个操作:
va_list XX //设定传入的参数的指针
va_start //初始化参数指针
va_arg //通过栈操作,根据偏移量读取参数值
va_end //参数读取完毕
va_start (pArgList, szFormat) ;
上面的szFormat就是初始的栈指针位置(第一个可变参数的首地址),以他为基准,进行偏移
例如:
va_arg( pArgList, unsigned long ) ;
那就是指以偏移unsigned long的siz,将其中的值作为参数。
可变参数的实现,其实是通过栈来实现的。
具体的细节原理,就不写了,你上网搜一下,挺多的。
最后一个参数...
这是书本介绍这个函数,最后...,表示还有一些参数,(不只是一个),省略了,下面不谈最后的几个参数。它们与 函数返回:
MessageBox (NULL, szBuffer, szCaption, 0) ;
里的参数也无关。
是不定参数的函数
比如标准C的printf()就是这样的函数
你用MSDN搜索va_list就能看到更详细的说明