我正在尝试从 tcl 8.4 迁移到 tcl 8.6。在我的项目中,使用了函数 **Tcl_FileObjCmd **,但是该函数在 tcl 8.6.6 中不可用。我无法找到其等效项来实现该功能。
请帮忙找到相同的。文档/变更日志等没有多大帮助。
我在文档中搜索过,但没有找到。我可以在 tcl 8.6.6 中找到一个新函数 Tcl_InitFileCmd,但需要一个示例来使用它来代替 Tcl_FileObjCmd。这里的界面也不同。另外,我不确定如何将用户提供的参数传递给这个新函数,就像之前的函数一样。
不再有任何像
Tcl_FileObjCmd()
本身那样的东西了;该功能在 8.5 中被删除。它是 file
命令的实现,而命令实现从来不应该是公共 C API 的一部分。它也不会回来; file
现在是一个具有完全不同实施策略的集成体。 (子命令现在本身就是 Tcl 命令。)
如果您希望它调用操作,可以使用真正的 API 来执行这些操作(大多数都有具有相当明显名称的对应项),或者调用命令(可能通过
Tcl_EvalObjv()
,因为这样可以避免通过解释器)。有一些事情这是正确的方法,主要是因为我们从不期望它们直接从 C 使用。