Я думаю, что некоторые более новые языки, такие как JS, могут сделать это изначально, но я забыл термин для него (сделайте «временную» функцию в строке, чтобы просто пройти как обратный вызов)Код в качестве параметра функции вместо объявления обратного вызова
То, что я хочу сделать, это ...
Я пишу юнит-тесты, где я настраивал ожидаемый ввод & вывода сообщений во время компиляции. Позже во время выполнения я хочу выполнить некоторые проверки, когда каждый выход получен или вход обработан, поэтому я добавил параметр для функции обратного вызова.
Это работает отлично, и я мог оставить его & двигаться дальше, но ... Я просто любопытно ...
иногда функция является излишеством, и мне просто нужно один сравнение; когда-нибудь будет делать небольшой блок кода. Возможно, я мог бы просто оценить их до нулевого/ненулевого значения во время выполнения? Но как пройти в качестве параметра?
На данный момент моя функция имеет следующую подпись
void AddExpectedCommand(E_peripheralType peripheral,
communicationBlock_t commandBlock,
errorMessage_t errorMessage,
void *(*DoRunTimeChecks)(E_boolean));
, где последний параметр является указателем на функцию обратного вызова, возвращающей логическое значение.
Есть ли способ, которым я мог бы передать выражение кода как параметр?
Или функция кажется «более чистой»?
Заранее спасибо за любую помощь ...
Update: упс, я получил мое заявление неправильно. Я хочу передать указатель так, что функция, которая не имеет параметров и возвращает e_Boolean ... как это сделать?
Последний параметр является указателем на функцию обратного вызова возвращает указатель типа 'void'. Указателем на функцию обратного вызова, возвращающим логическое значение, будет 'E_boolean (* DoRunTimeChecks) (E_boolean)'. –