I've always wondered where a single function such as printf(); can take in variable parameters and provide the right results. For example,

printf("Number is %d",a);

which has two parameters, and

printf("Numbers are %d and %d",a,b);

which has three variables. So, is there any possibilities for creating a user-defined function like these functions in C? If so, how can i do it? Thanks in advance.


1 Answer 1


Interestingly, the C standard defines what variadic function declarations should look like, but no guidance in how to implement them.

The mechanics for accessing arguments to variadic functions are therefore implementation-dependent. GNU C provides this via stdarg.h.

  • There is a small example on the va_start man page.
    – ott--
    Commented Mar 9, 2015 at 15:44
  • 5
    Actually, the macros in stdarg.h are the standard way for accessing arguments in variadic functions. The thing left open by the standard is how those macros should be implemented. Commented Mar 9, 2015 at 16:57
  • (and the macros are guaranteed to be provided by a compliant compiler, so you don't need to worry about it - writing and using variadic functions is perfectly well-defined)
    – Thomas
    Commented Mar 10, 2015 at 0:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.