Although
variable arguments are the only way to have achieve certain goals in
C, and are used in the important
I/O functions
printf and
scanf, there are some distinct disadvantages:
-
va_start and
va_arg must be implemented as
macros which are
evil in their own right.
- There is no way to tell what
type of argument is being passed in. It could be a
character string, it could be an
integer,
it could be your Aunt Matilda. You have to assume that code that calls your routine is passing in the right type of information and hope that Aunt Matilda doesn't get hurt in the process. This defeats the entire purpose of writing in
C++.
Finally, there are always other, better ways in
C++ to achieve whatever goal led you to want variable arguments in the first place. Use them instead.