Next: , Previous: , Up: C Interface   [Contents][Index]


6.28.7 How the C interface works

文書化されたC言語インターフェイスは、 宣言から C コードを生成することによって機能します。

特に、 c-function で宣言されたすべての Forth ワードに対して、 Forth スタックから Forth データを取得するラッパー関数をC言語で生成し、 これらのデータを引数としてターゲットのC言語の関数を呼び出します。 次に、 C言語のコンパイラは、 スタックからの Forth 型と、 C言語の関数プロトタイプによって指定されるパラメーターのC言語の型、 の間で暗黙的な変換を実行します。 C言語の関数から戻った後、 戻り値も同様に暗黙的に Forth 型に変換され、 スタックに書き戻されます。

\c 行はそのままC言語のコードに含まれており(ただし、\c は含まれません)、 C言語のコンパイラーがC言語の型を認識し、 そして、 変換を実行するのに十分な情報を得るために必要な宣言を提供します。

これらのラッパー関数は最終的にコンパイルされ、そして、 Gforth に動的にリンクされ、 そして、 呼び出すことができるようになります。

add-lib で追加されたライブラリは、 コンパイラのコマンド・ラインで -llib で依存ライブラリを指定するために使用され、 ラッパー関数がリンクされるときにこれらのライブラリが動的にリンクされます。