Callback

From C

Jump to: navigation, search

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;
}

.

Personal tools