ECL поддерживает обратные вызовы? - PullRequest
4 голосов
/ 05 марта 2012

Банально, как звучит вопрос, но через некоторое время, просматривая документацию ECL, документацию CFFI и прибегая к Google, я все еще не мог прийти к окончательному ответу.В документах ECL ничего не говорится о синтаксисе обратного вызова, в документах CFFI не упоминаются какие-либо ограничения реализации в отношении обратных вызовов в ECL, и я не могу привести страницы, на которые Google намекает, к логическим.

1 Ответ

6 голосов
/ 05 марта 2012

ECL поддерживает обратные вызовы как в интерпретируемом, так и в скомпилированном режиме. CFFI позаботится обо всем за вас, поэтому нет особого упоминания о ECL (почему это должно быть?). Если вы заботитесь о фактической реализации, посмотрите ecl / src / lsp / ffi.lsp. Подпись для FFI: DEFCALLBACK является (defmacro defcallback (имя ret-type ((arg-name arg-type) *) и тело) Другими словами, он принимает более или менее те же аргументы, что и DEF-FUNCTION (синтаксис типа тот же, UFFI), но он явно называет каждый из аргументов (arg-name) и предоставляет код в lisp для выполнения.

...