2015-06-06 23 views
5

Ich habe eine Funktion, die einen Funktionszeigereingang hat. Ich kann Funktionsnamen leicht als Eingabe geben. Aber ich frage mich, ob es möglich ist, eine Funktion als Eingabe zu definieren. Zum Beispiel habe ich eine Funktion wie diese;Definieren einer Funktion innerhalb des Eingangs einer anderen Funktion in C

void exampleFunction (void (*functionPointer)(void)) { 
    codes 
    ... 
} 

Kann ich einen solchen Eintrag in die Klammern eingeben? Beispielsweise;

exampleFunction(void helloFunction (void) { 
    printf("Hello"); 
}); 

Es gibt Kompilierungsfehler wie dies aber ist es noch andere Möglichkeiten, es zu tun?

+2

"Sonstige" Wege bedeutet, dass * das * ist. –

+0

OMG, gute Frage. Je mehr ich dieses Zeug sehe, desto weniger verstehe ich das Codieren in C im Gegensatz zu C++. Verwenden Sie keine Ausnahmen, virtuelle Funktionen oder was auch immer, wenn Sie es nicht mögen. –

Antwort

8

Das ist unmöglich in C.

In C++ Sie einen Lambda-Ausdruck verwenden:

exampleFunction([](){ std::cout << "Hello"; }); 
+0

Hahahahah! Vielen vielen Dank!!! : D Es hat tatsächlich funktioniert, weil ich Arduino IDE verwende, die auch C++ unterstützt. Ich habe C-Code in C++ Lambda-Ausdruck geschrieben und es hat funktioniert! Ich weiß, es ist keine gute Lösung, aber ich bin gerade so glücklich: D Danke nochmal ... –

Verwandte Themen