Suppose you are writing a program that repeatedly generates lists of numbers that can run anywhere from one to fifty items. You never know how many numbers a particular list will contain, but you always want to add all the numbers together. Passing them to an ordinary C function will not work, because an ordinary function has a fixed number of formal parameters, and cannot accept an arbitrarily long list of actual parameters. What should you do?
One way of solving this problem is to use a variadic function, or
function that can accept arbitrarily long lists of actual parameters.
You can do this by including the
stdarg.h header in your program.
For example, with
stdarg.h, you can write a function called
add_all that will add all integers passed to it, returning
correct results for all of the following calls:
sum = add_all (2, 3, 4); sum = add_all (10, 150, 9, 81, 14, 2, 2, 31); sum = add_all (4);
Unfortunately, the use of
stdarg.h is beyond the scope of this
tutorial. For more information on variadic functions, see
the GNU C Library manual.