我通过调用Tcl_main()启动交互式tcl解释器并在那里获取一些tcl命令。之后,我想退出tcl解释器并恢复我的程序。但是,当我输入"退出"时,它将退出整个程序。有没有办法退出tcl解释器并继续我的程序?感谢。
答案 0 :(得分:2)
Tcl_Main()
函数无法提供任何代码在完成后恢复的方法;它是处理简单程序的便利包装器,因此您不必担心这些事情,但是这种包装器在很多方面受到限制,其中之一就是您不能做你想要做的事情。 (在函数结束时,它调用Tcl_Exit()
。)
但您不需要使用Tcl_Main()
!它只使用Tcl的公共API(有一些例外情况可能对您无关紧要)。您可以通过调用(大约)来复制所有内容:
Tcl_FindExecutable(argv[0]); // ONCE PER PROCESS; INITIALISES TCL C LIBRARY
Tcl_Interp *interp = Tcl_CreateInterp();
// ... now in your loop evaluate code, perhaps from the user ...
Tcl_Eval(interp, "some code here");
// ...
Tcl_DeleteInterp(interp);
// Carry on as normal
那里没有什么神奇的魔力。只需初始化库,创建一个解释器,在那里评估你的代码(也许在从用户那里得到它;如果你想要发明你自己的读者循环或在Tcl中编写它),然后在你完成后删除解释器。