Anonymous user
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}}==
|