Tengo una función que toma un bloque de datos y el tamaño del bloque y un puntero a la función como argumento. Luego itera sobre los datos y realiza un cálculo en cada elemento del bloque de datos. El siguiente es el esquema esencial de lo que estoy haciendo:Punteros genéricos de función en C
int myfunction(int* data, int size, int (*functionAsPointer)(int)){
//walking through the data and calculating something
for (int n = 0; n < size; n++){
data[n] = (*function)(data[n]);
}
}
Las funciones que estoy pasando como argumentos ser algo como esto:
int mycalculation(int input){
//doing some math with input
//...
return input;
}
Esto funciona bien, pero ahora tengo que pasar una variable adicional para mi funciónpointer. Algo a lo largo de las líneas
int mynewcalculation(int input, int someVariable){
//e.g.
input = input * someVariable;
//...
return input;
}
¿Hay una manera elegante para lograr esto y al mismo tiempo mantener mi idea general del diseño?
¿Hay alguna razón por la que no pueda simplemente cambiar la declaración de la función para incluir el parámetro entero adicional? –
@dbingham: Si no estoy confundiendo, necesitaría una segunda "función" entonces, que tomaría un puntero a función con dos "entradas". El problema es que habrá muchas más funciones con diferentes tipos y números de argumentos. Entonces eso arruinaría mi diseño. – Lucas
No estoy seguro, entendí la pregunta correctamente desde el principio. Creo que Jefromi tiene las bases bastante bien cubiertas en este punto de todos modos. –