如何获取Tcl_Interp的字符串值

时间:2013-04-03 09:10:41

标签: tcl

我有Tcl_Interp的结构,我不知道拿着什么。我试图打印一个interp.result的字符串值,但它没有返回任何内容。我正在使用这个功能:

void debug_state(char *state);
像这样:

debug_state(Tcl_GetStringResult(g_game.tcl_interp));

但它没有返回任何东西。是否有其他方法可以查看除tcl_interp

之外的char *Tcl_GetStringResult(interp)的字符串值

1 个答案:

答案 0 :(得分:1)

除了解释器的不透明句柄之外,你不应该使用Tcl_Interp *。曾几何时,您使用interp->结果来访问结果,但这已经被弃用了十多年。正如您所发现的,Tcl_GetStringResult通常更好,应该使用Tcl_GetObjResult。通常,在新代码中,您应该尝试使用Tcl_Obj函数而不是字符串函数,因为这可以避免在不必要时与字符串类型之间的转换。

您的代码应该没问题,前提是debug_state在函数返回后不希望结果值有效。我会说,如果你看到一个空字符串,那么这就是你的翻译结果中的内容。您可以通过将其设置为例如:Tcl_SetObjResult(interp, Tcl_NewStringObj("testing, testing...", -1));之前的内容来检查。如果你然后调用Tcl_GetStringResult(interp),你应该得到一个指向上述字符串副本的char *指针。

相关问题