Ltest-varargs.c revision dee2508b2c1390f4279acfc4215559bf9c4056f3
1dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm#include <stdarg.h> 2dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm#include <stdio.h> 3dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm#include <stdlib.h> 4dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm#include <unistd.h> 5dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 6dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmextern int backtrace (void **, int); 7dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 8dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmstatic void 9dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmb (void) 10dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm{ 11dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm void *v[20]; 12dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm int i, n; 13dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 14dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm n = backtrace(v, 20); 15dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm for (i = 0; i < n; ++i) 16dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm printf ("[%d] %p\n", i, v[i]); 17dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm} 18dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 19dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmstatic void 20dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmc (void) 21dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm{ 22dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm b (); 23dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm} 24dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 25dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmstatic void 26dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidma (int d, ...) 27dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm{ 28dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm switch (d) 29dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm { 30dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm case 5: 31dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm a (4, 2,4); 32dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm break; 33dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm case 4: 34dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm a (3, 1,3,5); 35dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm break; 36dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm case 3: 37dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm a (2, 11, 13, 17, 23); 38dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm break; 39dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm case 2: 40dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm a (1); 41dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm break; 42dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm case 1: 43dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm c (); 44dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm } 45dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm} 46dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm 47dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmint 48dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidmmain (int argc, char **argv) 49dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm{ 50dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm a (5, 3, 4, 5, 6); 51dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm return 0; 52dee2508b2c1390f4279acfc4215559bf9c4056f3mostang.com!davidm} 53