0

我有一个 receive.tcl 脚本,它只包含一个由一些 1KLOC 组成的 proc

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.tcl是否有必要在每个等中包含/写入1.tcl 2.tcl;使用Receive.

或者

我可以从一些 Master( ) 脚本中调用“source PATH/receive.tcl” Master.tcl,它可以在任何1.tcl 2.tcl等等中进一步使用,而无需单独包含任何内容;TCL 解释器会存储/记住这个 proc Receive 并可以在任何进一步的脚本中使用吗?

问题:当我“$PATH/receive.tcl在每个1.tcl 2.tcl等等中而不是在Master.tclMaster.tcl包含source $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 不应该崩溃(如果你不使用任何 3rd 方 dll)。如果是这样,请考虑创建一个错误报告

1kloc 对我来说听起来很糟糕,也许别的更好。我认为您尝试解析一些输入并调用不同的东西,如果是这种情况,请查看interpTcl 中我最喜欢的宝石之一。

要回答您的问题: 您可以在 master 中获取文件,并从以后获取的其他文件中使用它。

在您的情况下(该文件的唯一目的是由其他文件调用),您可以创建一个包。创建包时最大的问题是决定安装它的位置(使用TCL_LIBRARY环境变量,在 中选择一个目录$auto_path,将文件夹添加到$auto_path代码中)。查看Tcl 教程以获取一些参考。

于 2013-02-22T07:41:31.180 回答