Content deleted Content added
Revert to revision 1236995707 dated 2024-07-27 15:47:53 by Jdcomix using popups |
→In C: NULL is not a good sentinel |
||
Line 46:
</syntaxhighlight>
This will compute the average of an arbitrary number of arguments. Note that the function does not know the number of arguments or their types. The above function expects that the types will be {{code|int}}, and that the number of arguments is passed in the first argument (this is a frequent usage but by no means enforced by the language or compiler). In some other cases, for example [[printf]], the number and types of arguments are figured out from a format string. In both cases, this depends on the programmer to supply the correct information. (Alternatively, a [[sentinel value]] like {{code|NULL}} or {{code|nullptr}} may be used to indicate the
{{code|stdarg.h}} declares a type, {{code|va_list}}, and defines four macros: [[va start|{{code|va_start}}]], [[va arg|{{code|va_arg}}]], [[va copy|{{code|va_copy}}]], and [[va end|{{code|va_end}}]]. Each invocation of {{code|va_start}} and {{code|va_copy}} must be matched by a corresponding invocation of {{code|va_end}}. When working with variable arguments, a function normally declares a variable of type {{code|va_list}} ({{code|ap}} in the example) that will be manipulated by the macros.
|