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 }