2015-06-06 3 views
5

У меня есть функция, которая имеет вход указателя функции. Я легко могу назвать имена функций в качестве входных данных. Но мне интересно, можно ли определить функцию как входную. Например, у меня есть такая функция;Определение функции внутри входа другой функции в C

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

Могу ли я ввести такой ввод внутри скобок? Например;

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

Это дает ошибку компиляции, как это, но есть ли другие способы сделать это?

+2

"Другие" способы следует, что * это * есть один. –

+0

OMG, хороший вопрос. Чем больше я вижу этот материал, тем меньше я понимаю кодировку в C, а не C++. Не используйте исключения, виртуальные функции или что-то еще, если вам это не нравится. –

ответ

8

Это невозможно в C.

В C++ можно использовать лямбда-выражение:

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

Hahhahah! Огромное спасибо!!! : D Это действительно сработало, потому что я использую Arduino IDE, который также поддерживает C++. Я написал код C в lambda-выражении C++, и это сработало! Я знаю, что это нехорошее решение, но я так счастлив сейчас: D Еще раз спасибо ... –

Смежные вопросы