kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

variadic_04_pointer.c (472B)


      1 /* Variadic pointer args — kit must route them through the GP save area
      2  * just like ints, and va_arg(ap, int*) must yield the pointer back. */
      3 int sum_through_ptrs(int n, ...) {
      4   __builtin_va_list ap;
      5   __builtin_va_start(ap, n);
      6   int s = 0;
      7   for (int i = 0; i < n; i++) {
      8     int* p = __builtin_va_arg(ap, int*);
      9     s += *p;
     10   }
     11   __builtin_va_end(ap);
     12   return s;
     13 }
     14 
     15 int test_main(void) {
     16   int a = 10, b = 20, c = 12;
     17   return sum_through_ptrs(3, &a, &b, &c);
     18 }