aboutsummaryrefslogtreecommitdiff
path: root/compile_data/func_pointer.c
diff options
context:
space:
mode:
authorTeddy <[email protected]>2014-05-07 11:55:51 +0800
committerTeddy <[email protected]>2014-05-07 11:55:51 +0800
commit30ecc9941b8da7a3c0108bc6117a1434e9caab94 (patch)
tree6a24b25086c63a4aa112fc6173b29c31793099d8 /compile_data/func_pointer.c
parentbbb4de0693ba2b010cd2c44805d9a4ee4a2a8904 (diff)
parent52b29440f8f1310e0c074c8eb409e433c56bdd62 (diff)
Merge /home/ymf/work/cibic into optimization
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;
+}