windows 编程学习中遇到了va之类的类型,请大神解释一上

windows 编程学习中遇到了va之类的类型,请大神解释一下?
例如:
va_list
va_start
va_end

------解决方案--------------------
查MSDN是Windows程序员必须掌握的技能之一。
英语也是一门计算机语言的说。

va_arg, va_end, va_start
Access variable-argument lists.

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

void va_start( va_list arg_ptr ); (UNIX version)

void va_start( va_list arg_ptr, prev_param ); (ANSI version)

Routine Required Header Optional Headers Compatibility 
va_arg <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 
va_end <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 
va_start <stdio.h> and <stdarg.h> <varargs.h>1 ANSI, Win 95, Win NT 


1 Required for UNIX V compatibility.

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 
LIBCMT.LIB Multithread static library, retail version 
MSVCRT.LIB Import library for MSVCRT.DLL, retail version 


Return Value

va_arg returns the current argument; va_start and va_end do not return values.

Parameters

type

Type of argument to be retrieved

arg_ptr

Pointer to list of arguments

prev_param

Parameter preceding first optional argument (ANSI only)

Remarks

The va_arg, va_end, and va_start macros provide a portable way to access the arguments to a function when the function takes a variable number of arguments. Two versions of the macros are available: The macros defined in STDARG.H conform to the ANSI C standard, and the macros defined in VARARGS.H are compatible with the UNIX System V definition. The macros are:

va_alist

Name of parameter to called function (UNIX version only)

va_arg

Macro to retrieve current argument

va_dcl

Declaration of va_alist (UNIX version only)

va_end

Macro to reset arg_ptr

va_list

typedef for pointer to list of arguments defined in STDIO.H

va_start

Macro to set arg_ptr to beginning of list of optional arguments (UNIX version only)

Both versions of the macros assume that the function takes a fixed number of required arguments, followed by a variable number of optional arguments. The required arguments are declared as ordinary parameters to the function and can be accessed through the parameter names. The optional arguments are accessed through the macros in STDARG.H or VARARGS.H, which set a pointer to the first optional argument in the argument list, retrieve arguments from the list, and reset the pointer when argument processing is completed.

The ANSI C standard macros, defined in STDARG.H, are used as follows: 

All required arguments to the function are declared as parameters in the usual way. va_dcl is not used with the STDARG.H macros.


va_start sets arg_ptr to the first optional argument in the list of arguments passed to the function. The argument arg_ptr must have va_list type. The argument prev_param is the name of the required parameter immediately preceding the first optional argument in the argument list. If prev_param is declared with the register storage class, the macro’s behavior is undefined. va_start must be used before va_arg is used for the first time.


va_arg retrieves a value of type from the location given by arg_ptr and increments arg_ptr to point to the next argument in the list, using the size of type to determine where the next argument starts. va_arg can be used any number of times within the function to retrieve arguments from the list.


After all arguments have been retrieved, va_end resets the pointer to NULL.