aboutsummaryrefslogtreecommitdiff
path: root/compile_data/func_pointer.c
diff options
context:
space:
mode:
Diffstat (limited to 'compile_data/func_pointer.c')
-rw-r--r--compile_data/func_pointer.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/compile_data/func_pointer.c b/compile_data/func_pointer.c
new file mode 100644
index 0000000..e7b6484
--- /dev/null
+++ b/compile_data/func_pointer.c
@@ -0,0 +1,19 @@
+typedef void (*Func_t)();
+void f(Func_t func, int step) {
+ if (!step) return;
+ printf("i'm f\n");
+ func(func, step - 1);
+}
+void g(void (*func)(), int step) {
+ if (!step) return;
+ printf("i'm g\n");
+ func(func, step - 1);
+}
+int main() {
+ void (*func)(void (*ifunc)(), int step);
+ int x = 1;
+ if (x) func = f;
+ else func = g;
+ func(func, 5);
+ return 0;
+}