2015-06-06 13 views
5

Mam funkcję, która ma funkcję wprowadzania wskaźnika. Mogę łatwo podać nazwy funkcji jako dane wejściowe. Zastanawiam się jednak, czy możliwe jest zdefiniowanie funkcji jako wejścia. Na przykład mam taką funkcję;Definiowanie funkcji wewnątrz wejścia innej funkcji w C

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

Czy mogę podać dane wejściowe w nawiasie? Na przykład;

Daje błąd kompilacji, ale czy są na to inne sposoby?

+2

"inne" sposoby oznacza, że ​​* to * jest jeden. –

+0

OMG, dobre pytanie. Im więcej widzę tych rzeczy, tym mniej rozumiem kodowanie w C w przeciwieństwie do C++. Nie używaj wyjątków, funkcji wirtualnych lub czegoś podobnego, jeśli ci się nie podoba. –

Odpowiedz

8

Jest to niemożliwe w C.

w C++, można użyć lambda-wyrażenie:

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

Hahhahah! Dziękuje bardzo!!! : D To zadziałało, ponieważ używam Arduino IDE, które obsługuje także C++. Napisałem trochę kodu C w wyrażeniu lambda C++ i zadziałało! Wiem, że to nie jest dobre rozwiązanie, ale teraz jestem taki szczęśliwy: D Jeszcze raz dziękuję ... –