# HG changeset patch # User Markus Bröker # Date 1229187497 -3600 # Node ID 9cdad6c45b47f40d1f75b26c7544c7413f670354 # Parent 7acfc5eda7ed2efdf96c13bb3fb9b6bf60ac9259 function pointer demo added committer: Markus Bröker diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -40,7 +40,8 @@ mem2swap \ prog_limit \ connection \ - copy + copy \ + function_pointers .SUFFIXES: .c .cc .asm @@ -220,6 +221,10 @@ @echo Linking $< ... @$(CPP) -o $@ $< +function_pointers: function_pointers.o + @echo Linking $< ... + @$(CC) -o $@ $< + .PHONY: clean uninstall clean: diff --git a/function_pointers.c b/function_pointers.c new file mode 100644 --- /dev/null +++ b/function_pointers.c @@ -0,0 +1,40 @@ +/** + * test/demos/function_pointers.c + * Copyright (C) 2008 Markus Broeker + */ + +#include +#include + +typedef struct T { + int a; + int b; +} T; + +int plus(T t) +{ + return t.a+t.b; +} + +int minus(T t) +{ + return t.a-t.b; +} + +int func(T t, int (*ptrFunc)(T)) +{ + return ptrFunc(t); +} + +int main(int argc, char **argv) +{ + T t = { + .a = 20, + .b = 10 + }; + + printf("Result: %d\n", func(t, &plus)); + printf("Result: %d\n", func(t, &minus)); + + return EXIT_SUCCESS; +}