2015-06-06 17 views
5

Ho una funzione che ha un ingresso del puntatore funzione. Posso facilmente dare nomi di funzioni ad esso come input. Ma mi chiedo se sia possibile definire una funzione come input. Ad esempio, ho una funzione come questa;Definizione di una funzione all'interno dell'ingresso di un'altra funzione in C

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

Posso inserire un input come questo all'interno delle parentesi? Per esempio;

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

Fornisce errori di compilazione come questo ma esistono altri modi per farlo?

+2

"altri" modi implica che * * questo è uno. –

+0

OMG, buona domanda. Più vedo questa roba, meno capisco la codifica in C rispetto a C++. Non utilizzare eccezioni, funzioni virtuali o altro, se non ti piace. –

risposta

8

Questo è impossibile in C.

In C++, è possibile utilizzare un lambda-espressione:

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

Hahahah! Grazie mille!!! : D In realtà ha funzionato, perché sto usando Arduino IDE che supporta anche C++. Ho scritto un codice C in lambda-expression in C++ e ha funzionato! So che non è una buona soluzione, ma sono così felice adesso: D Grazie ancora ... –

Problemi correlati