Das folgende Beispiel zeigt, wie Callback-Funktionen verwendet werden können.

#include <stdio.h>
#include <stdlib.h>

typedef double (*CalculateFn_t)(double, double);

void usage()
{
    printf("calculator <VAL1> <OP> <VAL2>\n");
    printf(" VAL1/VAL2 : floating point number\n");
    printf(" OP        : one of + - * /\n");
}

double add(double a, double b)
{
    return a + b;
}

double subtract(double a, double b)
{
    return a - b;
}

double multiply(double a, double b)
{
    return a * b;
}

double divide(double a, double b)
{
    return a / b;
}

int main(int argc, char *argv[])
{
    if (argc != 4) {
        usage();
        return 0;
    }

    double a = atof(argv[1]);
    double b = atof(argv[3]);
    char op = argv[2][0];
    CalculateFn_t calculateFn;

    switch(op)
    {
        case '+':
            calculateFn = &add;
            break;
        case '-':
            calculateFn = &subtract;
            break;
        case '*':
            calculateFn = &multiply;
            break;
        case '/':
            calculateFn = &divide;
            break;
        default:
            printf("ERROR: input invalid\n");
            return EXIT_FAILURE;
    }

    double res = calculateFn(a, b);

    printf("%f\n", res);

    return 0;
}
Last modified: Friday, 1 June 2018, 12:42 PM