diff --git a/va_args/Makefile b/va_args/Makefile new file mode 100644 index 0000000..d246f81 --- /dev/null +++ b/va_args/Makefile @@ -0,0 +1,14 @@ +CC = gcc +CFLAGS = -Wall -O2 + +TARGET = main.elf +SRC = main.c + +#LDFLAGS = + +$(TARGET): $(SRC) + @echo CC $@ + @$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +clean: + rm -f $(TARGET) diff --git a/va_args/main.c b/va_args/main.c new file mode 100644 index 0000000..3e50936 --- /dev/null +++ b/va_args/main.c @@ -0,0 +1,21 @@ +#include +#include + +int sum(int count, ...) { + int total = 0; + va_list args; + va_start(args, count); + + for (int i = 0; i < count; i++) { + total += va_arg(args, int); + } + + va_end(args); + return total; +} + +int main() { + printf("Sum: %d\n", sum(4, 1, 2, 3, 4)); + printf("Sum: %d\n", sum(2, 100, 200)); + return 0; +}