- ($ [RETURNTYPE] NAME (TYPE ARGUMENT) ...)syntax
Invokes a C/C++ function by evaluating the arguments, performing the neccessary type-conversions for the foreign type-specifiers TYPE ... and calling NAME (which must be a symbol).
If RETURNTYPE is given, then the result will be converted properly and returned, otherwise void is assumed.
The type/argument lists may also be literal Scheme data or expressions of the form (quote LITERAL) or (location ...) - in this case the arguments are converted according to the type of the literal or are treated as a c-pointer, respectively.
Booleans, characters, numbers, strings, SRFI-4 number vectors and symbols are converted, all other data is passed as being of type scheme-object.
Callbacks into Scheme are not allowed inside the invoked foreign code.
This macro expands into one of the foreign-lambda*, foreign-code or foreign-value forms.