modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/920625-1.c (about)

     1  #include <stdarg.h>
     2  
     3  typedef struct{double x,y;}point;
     4  point pts[]={{1.0,2.0},{3.0,4.0},{5.0,6.0},{7.0,8.0}};
     5  static int va1(int nargs,...)
     6  {
     7    va_list args;
     8    int i;
     9    point pi;
    10    va_start(args,nargs);
    11    for(i=0;i<nargs;i++){
    12      pi=va_arg(args,point);
    13      if(pts[i].x!=pi.x||pts[i].y!=pi.y)abort();
    14    }
    15    va_end(args);
    16  }
    17  
    18  typedef struct{int x,y;}ipoint;
    19  ipoint ipts[]={{1,2},{3,4},{5,6},{7,8}};
    20  static int va2(int nargs,...)
    21  {
    22    va_list args;
    23    int i;
    24    ipoint pi;
    25    va_start(args,nargs);
    26    for(i=0;i<nargs;i++){
    27      pi=va_arg(args,ipoint);
    28      if(ipts[i].x!=pi.x||ipts[i].y!=pi.y)abort();
    29    }
    30    va_end(args);
    31  }
    32  
    33  main()
    34  {
    35  va1(4,pts[0],pts[1],pts[2],pts[3]);
    36  va2(4,ipts[0],ipts[1],ipts[2],ipts[3]);
    37  exit(0);
    38  }