Passing operator as a parameter in C99

Viewed 1620

I want to pass an operator as a parameter in C99. My solution is this:

int add(int l, int r)
{
    return l + r;
}

int sub(int l, int r)
{
    return l - r;
}

// ... long list of operator functions

int perform(int (*f)(int, int), int left, int right)
{
    return f(left, right);
}

int main(void)
{
    int a = perform(&add, 3, 2);
}

Is there some other way to do it? I don't want to write a function for every operator.

It could look like this:

int a = perform(something_cool_here, 3, 2);

2 Answers
Related