Callback
From C
Code Sample #1
#include <stdio.h> int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } typedef int function(int a, int b); int call_function(function *p, int a, int b) { return p(a, b); } int main(void) { int sum; sum = call_function(&add, 10, 5); printf("add: %d\n", sum); sum = call_function(&sub, 10, 5); printf("sub: %d\n", sum); return 0; }
Code Sample #2
#include <stdio.h> struct add_ctx { int a; int b; int c; }; int add(void *ctx_) { struct add_ctx *ctx = ctx_; return ctx->a + ctx->b + ctx->c; } struct sub_ctx { int a; int b; }; int sub(void *ctx_) { struct sub_ctx *ctx = ctx_; return ctx->a - ctx->b; } typedef int function(void *); int call_function(function *p, void *ctx) { return p(ctx); } int main(void) { int sum; struct add_ctx add_ctx = { 1, 2 , 3}; sum = call_function(&add, &add_ctx); printf("add: %d\n", sum); struct sub_ctx sub_ctx = { 1, 2}; sum = call_function(&sub, &sub_ctx); printf("sub: %d\n", sum); return 0; }
.