diff options
Diffstat (limited to '05/main.c')
-rw-r--r-- | 05/main.c | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,19 @@ +typedef unsigned long va_list; +#define va_start(list, arg) ((list) = (unsigned long)&arg) +#define va_arg(list, type) (*((type *)(list += ((sizeof(type) + 7) & 0xfffffffffffffff8)))) +#define va_end(list) + +int sum(int n, ...) { + va_list args; + int i; + int total = 0; + va_start(args, n); + for (i = 0; i < n; ++i) { + total += va_arg(args, int); + } + return total; +} + long factorial(long x) { if (x == 0) { return 1; @@ -28,6 +44,6 @@ int f() { } int main(int argc, char **argv) { - return fibonacci(20); + return sum(3, -100, 200, -300); } |