Keil Logo

va_arg

Summary
#include <stdarg.h>

type va_arg (
  argptr,      /* optional argument list */
  type);       /* type of next argument */
Description

The va_arg macro is used to extract subsequent arguments from a variable-length argument list referenced by argptr. The type argument specifies the data type of the argument to extract. This macro may be called only once for each argument and must be called in the order of the parameters in the argument list.

The first call to va_arg returns the first argument after the prevparm argument specified in the va_start macro. Subsequent calls to va_arg return the remaining arguments in succession.

Return Value

The va_arg macro returns the value for the specified argument type.

See Also

va_end, va_start

Example
#include <stdarg.h>
#include <stdio.h> /* for printf */

int varfunc (char *buf, int id, ...) {
  va_list tag;

  va_start (tag, id);

  if (id == 0) {
    int arg1;
    char *arg2;
    long arg3;

    arg1 = va_arg (tag, int);
    arg2 = va_arg (tag, char *);
    arg3 = va_arg (tag, long);
  }

  else {
    char *arg1;
    char *arg2;
    long arg3;

    arg1 = va_arg (tag, char *);
    arg2 = va_arg (tag, char *);
    arg3 = va_arg (tag, long);
  }

  va_end (tag);
}

void caller (void) {
  char tmp_buffer [10];

  varfunc (tmp_buffer, 0, 27, "Test Code", 100L);
  varfunc (tmp_buffer, 1, "Test", "Code", 348L);
}
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.