Funktion soll andere Funktion aufrufen, deren Name übergeben wird

Hallo, ich finde in manchen Libraries Funktionen, denen man zum Beispiel GetTime als Methodenparameter mitgibt und diese Funktion ruft dann die Funktion GetTime() auf. Frage ist jetzt, wie setzte ich das um?

Ein Beispiel?

Wenn eine Funktion innerhalb eines Übergabeparameters aufgerufen wird, geht es meist darum, den Wert dieser Funktion als Übergabeparameter zu nutzen.

void loop() {
Serial.print(millis());
}

Funktionszeiger als Parameter: http://www.elektronik-bastelkeller.de/C_Ardu_8_6.php

void func1()
{
}

void func2(void (*func)(void))
{
     func();
}

void loop()
{
      func2(func1);
}

Rückgabewerte und Parameter sind natürlich auch möglich (statt wie hier void), aber die Funktionen müssen alle die gleiche Signatur haben.

Das ganze wird manchmal auch Callback genannt: http://de.wikipedia.org/wiki/R%C3%BCckruffunktion

Andere Beispiele sind z.B. Interrupts wie attachInterrupt() oder die Timer-Bibliotheken

Beispiel:

void FunktionAufrufen(String funktion){ rufe Funktion mit dem in funktion gespeichertem Namen auf; }

Danke an Serenifly für die passende Antwort

Das hat nichts mit Strings zu tun. Was da übergeben wird ist die Adresse der Funktion. Der Methoden Name für sich, ohne Klammern, ist die Adresse.

Das siehst du z.B. wenn du sowas machst:

void func1()
{
}

void func2()
{
}

void loop()
{
    Serial.println(func1, HEX);
    Serial.println(func2, HEX);
}

Mit Funktionszeigern lässt sich noch mehr machen. Man kann sie z.B. in Arrays abspeichern und darüber iterieren.

Ich wusste nicht wie das gemacht wird, deswegen hab ich einfach mal String dazu gesagt :D