Ich habe eine Funktion, die einen Block von Daten und die Größe des Blocks und einen Funktionszeiger als Argument nimmt. Dann iteriert es über die Daten und führt eine Berechnung für jedes Element des Datenblocks durch. Im Folgenden ist der wesentliche Umriss, was ich tue:Generische Funktionszeiger in 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]);
}
}
Die Funktionen, die ich als Argumente bin vorbei dies in etwa so aussehen:
int mycalculation(int input){
//doing some math with input
//...
return input;
}
Dieses gut funktioniert, aber jetzt muss ich weitergeben eine zusätzliche Variable zu meinem Funktionspointer. Etwas nach dem Vorbild
int mynewcalculation(int input, int someVariable){
//e.g.
input = input * someVariable;
//...
return input;
}
Gibt es eine elegante Möglichkeit, dies und zugleich zu erreichen Idee, meine gesamte Design zu halten?
Gibt es einen Grund, warum Sie die Funktionsdeklaration nicht einfach so ändern können, dass sie den zusätzlichen ganzzahligen Parameter enthält? –
@dbingham: Wenn ich mich nicht irre, würde ich dann eine zweite "myfunction" brauchen, die einen Funktionszeiger mit zwei "ints" nehmen würde. Das Problem ist, dass es viel mehr Funktionen mit verschiedenen Typen und einer Anzahl von Argumenten geben wird. Das würde mein Design durcheinander bringen. – Lucas
Ich bin mir nicht sicher, ich habe die Frage von Anfang an richtig verstanden. Ich denke, Jefromi hat die Grundlagen sowieso ziemlich gut abgedeckt. –