Variadic Pointer Args (Using the GNU Compiler Collection (GCC))

#### 6.13.3 Pointer Arguments in Variadic Functions ¶

Standard C requires that pointer types used with `va_arg` in functions with variable argument lists either must be compatible with that of the actual argument, or that one type must be a pointer to `void` and the other a pointer to a character type. GNU C implements the POSIX XSI extension that additionally permits the use of `va_arg` with a pointer type to receive arguments of any other pointer type.

In particular, in GNU C ‘`va_arg (ap, void *)`’ can safely be used to consume an argument of any pointer type.