Listing 1

    #include <stdarg.h>         /* variable argument macros */
    #include <stdio.h>          /* for printf */

    int maxn(int n, ...);       /* the function prototype for maxn */

    /* Main makes some calls to maxn, and prints the results. */

     void main(void)
       {
       printf("MaxN tests:\n\n");
       printf(
          "maxn(2, 3, 5) = %d\n",
           maxn(2, 3, 5) );
       printf(
          "maxn(5, 3, 5, 7, 11, 13) = %d\n",
           maxn(5, 3, 5, 7, 11, 13) );
       printf(
          "maxn(3, 3, 5, 7, 11, 13) = %d\n",
           maxn(3, 3, 5, 7, 11, 13) );
       printf(
          "maxn(1, 9) = %d\n",
           maxn(1, 9) );
       }

    /* The maxn function returns the largest of n integer arguments. */
    int maxn(int n, ...)
       {
       int val, max_val;
       va_list argp;       /* pointer to arguments */

       va_start(argp, n);  /* points argp to arg after n */

       max_val = va_arg(argp, int);   /* get first of n arguments */
       while (--n)
          {
          val = va_arg(argp, int);    /* get subsequent arguments */
          if (val > max_val)
             max_val= val;           /* max_val gets the largest */
          }

       va_end(argp);      /* clean up */

       return max_val;    /* return value of the largest */
    }

/* End of File */