1

TCLコマンドの私のC側の実装では、たとえば、次の署名で:

myfunc(ClientData 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"

最初の呼び出しは2つの引数で、次の3つの引数です。

私が言及した問題は、2つの引数を期待する場合、「objc」が3で、「objv[3]」が「0」または「1」のいずれかであることがわかります。

4

1 に答える 1

1

それがあなたの問題かどうかはわかりませんが(タイプミスの可能性があります)、objv [3]は、objcが3の場合、範囲外へのアクセスです。カウントが3の場合、アクセス可能な最大インデックスは2です。配列の内容にアクセスするためのobjv[0]。

于 2013-01-23T23:52:32.003 に答える