The argument values can be retrieved by using the va_arg, va_start and va_end macros.
These macros assume that the function will be called with a fixed number of required parameters and variable number of optional parameters.
The following sample program uses a function Add with variable arguments and returns the value of the added items.
#include
#include
int Add(int a,int b,...){
//This one handles 4 arguments in total.
int l_ParamVal=0;
int total=0;
int i;
//Declare a va_list macro and initialize it with va_start
va_list l_Arg;va_start(l_Arg,a);
//The required parameters can also be accessed directly
l_ParamVal = a;
printf("%d\n",l_ParamVal);
if(l_ParamVal != -1)
total = total +l_ParamVal;
l_ParamVal = va_arg(l_Arg,int);
printf("%d\n",l_ParamVal);
if(l_ParamVal != -1)total = total +l_ParamVal;
l_ParamVal = va_arg(l_Arg,int);
printf("%d\n",l_ParamVal);
if(l_ParamVal != -1)
total = total +l_ParamVal;
l_ParamVal = va_arg(l_Arg,int);
printf("%d\n",l_ParamVal);
if(l_ParamVal != -1)
total = total +l_ParamVal;
va_end(l_Arg);
return total;
}
void main()
{
printf("Total of C++ Variable Arguments: %d\n",Add(2,3,4));
}
The above sample takes some integer parameters and returns their added result. This function can handle up to 4 parameters.
Tuesday, October 30, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment