// Error: el contexto no es del tipo que el callback supone.
#include <stdio.h>

#define COUNT 3

typedef void (*Visitor)(int value, void *context);

typedef struct {
    int limit;
    int sum;
    int taken;
} SumAbove;

void add_if_above(int value, void *context) {
    SumAbove *state = context;
    if (value > state->limit) {
        state->sum += value;
        state->taken++;
    }
}

void for_each(const int *values, int n, Visitor visit, void *context) {
    for (int i = 0; i < n; i++) {
        visit(values[i], context);
    }
}

int main(void) {
    int grades[COUNT] = {14, 9, 20};
    int limit = 10;
    for_each(grades, COUNT, add_if_above, &limit);
    printf("limit = %d\n", limit);
    return 0;
}
