I think there is a small contradiction in the documentation for c-lambda in the manual at
http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#SEC132
[...] the result to be returned from the call should be assigned to the variable `___result' except when the result is of type struct, union, type, pointer, nonnull-pointer, function or nonnull-function in which case a pointer must be assigned to the variable `___result_voidstar' which is of type `void*'. [...]
But then in one of the examples:
(define stdin ((c-lambda () (pointer "FILE") "___result = stdin;")))
Shouldn't that be "___result_voidstar = (void*)stdin;", then?
Afficher les réponses par date
On 12-Jan-08, at 6:18 PM, Esteban U. Caamano Castro wrote:
But then in one of the examples:
(define stdin ((c-lambda () (pointer "FILE") "___result = stdin;")))
Shouldn't that be "___result_voidstar = (void*)stdin;", then?
Thanks! I have fixed it. Note that the cast to void* is not necessary because in C (and C++) pointers of any type can be assigned to the void* type:
(define stdin ((c-lambda () (pointer "FILE") "___result_voidstar = stdin;")))
Marc