以下のように、 一連の C 言語関数宣言(ライブラリー・インターフェイス)に名前を付けることができます:
c-library lseek-lib \c #define _FILE_OFFSET_BITS 64 ... end-c-library
インターフェイスにこのような名前を付けると、 生成されるファイルの名前にその名前が含まれるようになり、 インターフェイスを 2 回目に使用するときに、 再度生成してコンパイルする代わりに既存のファイルが使用されるため、時間を節約できます。 生成されたファイルにはソース・コードの 128 ビット・ハッシュ(暗号的に安全ではありませんが、 この目的には十分である)が含まれているため、 宣言を変更すると新しいコンパイルが発生します。 通常、 これらのファイルは $HOME/.gforth/architecture/libcc-named にキャッシュされるため、 問題が発生した場合、 または再コンパイルの強制が必要なその他の理由がある場合は、そこにあるファイルを削除してください。
注意: c-library
を使用すると、 一部の設定がリセットされるため、 そのライブラリに関連する他のすべての処理の前に
c-library
を使用する必要があることに注意してください。 c-library
の考え方は、 一般的な使用法としては、
各 c-library
...end-c-library
ユニットを独自のファイルに配置し、
これらのファイルを任意の順序でインクルードできるようにすることです。 C 言語インターフェースを扱う他のすべてのワードは、 ボキャブラリー
c-lib
に隠されており、 c-library
によって検索順序スタックの最上位に置かれ、
end-c-library
によって検索順序スタックの最上位から削除されます。
注意: ライブラリー名はディクショナリーに割り当てられないため、 ディクショナリー内の名前に影響を与えないことに注意してください。
ファイル・システムで使用されるため、 ファイル・システムに適した命名規則を使用する必要があります。
この名前はC言語のシンボルの一部としても使用されますが、 正当なC言語のシンボル名以外の文字はアンダースコアに置き換えられます。 また、
c-library
の後で宣言した関数を end-c-library
を実行する前に呼び出してはなりません。
これらの名前付きライブラリー・インターフェイスの主な利点は、 それらが生成されると、 その生成に使用したツール(特に C 言語のコンパイラーと libtool)が不要になるため、 ツールがインストールされていないマシンでもインターフェイスを使用できることです。 Gforth のビルド・システムはこれらのライブラリーをクロス・コンパイルすることもできるため、 ビルド・ツールがインストールされていないプラットフォームでもライブラリーを利用できます。
c-library-name
( c-addr u – ) gforth-0.7 “c-library-name”
c-addr u という名前で C 言語ライブラリー・インターフェイスを開始。
c-library
( "name" – ) gforth-0.7 “c-library”
c-library-name
のパース対応(parsing)バージョンです
end-c-library
( – ) gforth-0.7 “end-c-library”
直近の C 言語ライブラリー・インターフェイスを終了し、 (必要に応じて)ビルドします。