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

     1  #include <stdarg.h>
     2  
     3  struct s { int x, y; };
     4  
     5  f (int attr, ...)
     6  {
     7    struct s va_values;
     8    va_list va;
     9    int i;
    10  
    11    va_start (va, attr);
    12  
    13    if (attr != 2)
    14      abort ();
    15  
    16    va_values = va_arg (va, struct s);
    17    if (va_values.x != 0xaaaa || va_values.y != 0x5555)
    18      abort ();
    19  
    20    attr = va_arg (va, int);
    21    if (attr != 3)
    22      abort ();
    23  
    24    va_values = va_arg (va, struct s);
    25    if (va_values.x != 0xffff || va_values.y != 0x1111)
    26      abort ();
    27  
    28    va_end (va);
    29  }
    30  
    31  main ()
    32  {
    33    struct s a, b;
    34  
    35    a.x = 0xaaaa;
    36    a.y = 0x5555;
    37    b.x = 0xffff;
    38    b.y = 0x1111;
    39  
    40    f (2, a, 3, b);
    41    exit (0);
    42  }