(root)/
gcc-13.2.0/
gcc/
testsuite/
gm2/
extensions/
run/
pass/
cvararg.c
       1  #include <stdio.h>
       2  #include <stdarg.h>
       3  #include <stdlib.h>
       4  #include <string.h>
       5  
       6  
       7  int func (int code, ...)
       8  {
       9    va_list argsPtr;
      10    int i, v;
      11  
      12    va_start(argsPtr, code);
      13    for (i=1; i<=code; i++) {
      14      v = va_arg(argsPtr, int);
      15      printf("%d parameter is %d\n", i, v);
      16      if (i != v)
      17        exit(1);
      18    }
      19    va_end(argsPtr);
      20    return 1;
      21  }
      22  
      23  
      24  int funcptr (int code, ...)
      25  {
      26    va_list argsPtr;
      27    int l, v;
      28    char *p;
      29  
      30    va_start(argsPtr, code);
      31    switch (code) {
      32  
      33    case 1:   
      34      p = va_arg(argsPtr, char *);
      35      l = va_arg(argsPtr, int);
      36      printf("parameter is %s and length %d\n", p, l);
      37      if (strlen(p) != l)
      38        exit(1);
      39      break;
      40    }
      41    va_end(argsPtr);
      42    return 1;
      43  }
      44  
      45  
      46  int funcptrint (char *p, ...)
      47  {
      48    va_list argsPtr;
      49    int l, v;
      50  
      51    va_start(argsPtr, p);
      52  
      53    l = va_arg(argsPtr, int);
      54    printf("parameter is %s and length %d\n", p, l);
      55    if (strlen(p) != l)
      56      exit(1);
      57  
      58    va_end(argsPtr);
      59    return 1;
      60  }