test.h: #include <stdio.h> #include <stdlib.h> struct test { int (*foo)(int test1, int test2); int test; }; test.c: #include "test.h" int bar(int test1, int test2) { puts("test"); return 0; } foo = &bar; main.c: #include <stdio.h> #include <stdlib.h> #include "test.h" int main(void) { struct foobar; foo(1,2); return 0; }