0

一部の 1KLOC で構成される単一の proc のみを含む receive.tcl スクリプトが 1 つあります。

puts "DEBUG_1"
proc Receive { arg1 arg2} {
puts "DEBUG_2"
... TCL Code
}
puts "DEBUG_3"

今、私は非常に多くの異なるスクリプトでこの proc Receive を使用する必要があります。で言いましょう。1.tcl 2.tcl 3.tclなど、これら1.tcl 2.tclはすべて Master( Master.tcl) から呼び出されます。

source PATH/receive.tcleveryなどに含める/書く1.tcl 2.tcl必要がありますか?使用するReceive

また

Master.tcl一部の Master( ) スクリプトから「source PATH/receive.tcl」を呼び出すことができ1.tcl 2.tcl、個別に何も含めずに、任意のスクリプトなどでさらに使用できます。TCL インタープリターは、この proc Receive を保存/記憶し、それ以降のスクリプトで使用できますか?

問題 :$PATH/receive.tclevery1.tcl 2.tclなどをソースとしてMaster.tcl; Master.tclcontainssource $PATH/1.tcl source $PATH/2.tclなどをソースとして使用している場合、 Master.tcl.

  1. 最初の反復1.tclでは、正常に実行されます。
  2. 通訳が入りreceive.tclます。印刷DEBUG_1DEBUG_3てさらに順調proc Receiveに使用されてい1.tclます。
  3. しかし、インタプリタがそこに移動する2.tclと、source $PATH/receive.tcl
  4. 通訳者が行くreceive.tcl
  5. TCL は何度もクラッシュします。DEBUG_1私はただしか見えないという意味です。その後のセグメンテーション違反。
4

1 に答える 1

2

まず、Tcl がクラッシュしないようにする必要があります (サード パーティの dll を使用しない場合)。その場合は、バグ レポートの作成を検討してください。

1kloc は良くないように思えます。入力を解析して別のものを呼び出そうとしていると思います。その場合は、interpTcl で私のお気に入りの宝石の 1 つである を見てください。

あなたの質問に答えるには: マスターでファイルをソースし、後でソースされる他のファイルからそれを使用できます。

あなたの場合(そのファイルの唯一の目的が他のファイルから呼び出されることである場合)、パッケージを作成できます。パッケージを作成する際の最大の問題は、パッケージをインストールする場所を決定することです (TCL_LIBRARY環境変数を使用し、 でディレクトリを選択し、コードで$auto_pathにフォルダを追加します$auto_path)。Tcl チュートリアルを参照してください。

于 2013-02-22T07:41:31.180 に答える