Jump to content

Call a foreign-language function: Difference between revisions

GNU Forth 0.7.0
m (→‎{{header|Ruby}}: more legible quoting)
(GNU Forth 0.7.0)
Line 43:
Hello World!
; No value</lang>
 
=={{header|Forth}}
{{works with|GNU Forth|0.7.0}}
 
Every version of GNU Forth has experimented with a different means to do C foreign function calls. The current implementation resolves various incompatibilities which had plagued earlier mechanisms by parsing C header files and using the host's native toolchain (i.e. gcc and ld) to generate thunks.
 
<lang forth>
c-library cstrings
 
\c #include <string.h>
c-function strdup strdup a -- a ( c-string -- duped string )
c-function strlen strlen a -- n ( c-string -- length )
 
end-c-library
 
\ convenience function (not used here)
: c-string ( addr u -- addr' )
tuck pad swap move pad + 0 swap c! pad ;
 
create test s" testing" mem, 0 c,
 
test strdup value duped
 
test .
test 7 type \ testing
cr
duped . \ different address
duped dup strlen type \ testing
 
duped free throw \ gforth ALLOCATE and FREE map directly to C's malloc() and free()
</lang>
 
=={{header|OCaml}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.