require ./funcall.fs VARIABLE current-lib \ Vom Benutzer zu setzen: open-lib current-lib ! \ Funktionsaddresse in Forth-Wort gleichen Namens speichern : c-import: ( "name" -- ) >in @ create >in ! \ Wort "name" erzeugen, aber "name" nicht konsumieren parse-name \ "name" nochmal als String auf den Stack legen current-lib @ lib-sym \ und Addresse der Funktion "name" ermitteln dup 0= ABORT" symbol not found" \ hat es geklappt? , ; \ Addresse der Funktion im Datenbereich von "name" ablegen \ Definiere Wörter, die c-import aufrufen, und 'xt' benutzen um die \ importierten Funktionen aufzurufen : c-importer: ( xt "name" -- ) CREATE , DOES> c-import: @ , DOES> dup @ swap cell + PERFORM ; \ Ein Import-Wort pro Anzahl Parameter/Rückgabewerte ' void(void) c-importer: void(void): ' void(int) c-importer: void(int): ' void(2xint) c-importer: void(2xint): ' int(void) c-importer: int(void): ' int(int) c-importer: int(int): ' int(2xint) c-importer: int(2xint): ' int(3xint) c-importer: int(3xint): ' int(6xint) c-importer: int(6xint):