TCL-objc向C端再传递1个伪值

TCL-objc向C端再传递1个伪值,tcl,Tcl,在TCL命令的C端实现中,例如,在以下签名中: myfunc(客户端数据c、Tcl_Interp*Interp、int objc、Tcl_Obj*const objv[]) 我发现有时objc大于传入的参数数量,相应的objv值为“0”或“1” 我在谷歌上找不到任何关于这类问题的报道,我的TCL方面应该有问题,但我不知道为什么 我的TCL端使用2个参数或3个参数调用命令- myfunc arg1 "word1 word2" <... some code ...> myfunc

在TCL命令的C端实现中,例如,在以下签名中:

myfunc(客户端数据c、Tcl_Interp*Interp、int objc、Tcl_Obj*const objv[])

我发现有时objc大于传入的参数数量,相应的objv值为“0”或“1”

我在谷歌上找不到任何关于这类问题的报道,我的TCL方面应该有问题,但我不知道为什么

我的TCL端使用2个参数或3个参数调用命令-

myfunc arg1 "word1 word2"   
<... some code ...>
myfunc arg1  ""  "checker1 checker2"
myfunc arg1“word1 word2”
myfunc arg1“checker1 checker2”
第一个调用是2个参数,接下来是3个参数


我提到的问题是,当我需要2个参数时,我看到“objc”是3,“objv[3]”是“0”或“1”。

我不知道这是否是您的问题(可能是打字错误),但当objc只有3时,objv[3]是无法访问的,因为当计数为3时,最大可访问索引是2。您应该从objv[0]开始访问数组内容。

我不知道这是否是您的问题(可能是打字错误),但当objc只有3时,objv[3]是无法访问的,因为计数为3时,最大可访问索引是2。你应该从objv[0]开始访问数组内容。

是的,天哪,我今天脑子短路了。谢谢嗯,
objv[0]
应该是被调用的命令的名称(用于生成错误消息)。是的,天哪,我今天脑子短路了。谢谢嗯,
objv[0]
应该是被调用的命令的名称(用于生成错误消息)。