TCL脚本访问结构元素

时间:2013-11-30 13:56:29

标签: tcl

我是TCL编程的新手。有人可以指导我访问被调用过程中的结构变量(SAV_DATA)吗?

struct_typedef XYZ {struct
  {ulong a}
  {ulong b}
}

proc SET_DATA {} {
  struct_new x XYZ

  set x(a) 1
  set x(b) 2

  SAV_DATA x
}

proc SAV_DATA {ARG1} {
  //How do i access the structure variables in this procedure
}

1 个答案:

答案 0 :(得分:2)

struct_typedef必须是代码中其他位置定义的过程。还有struct_new。如果它是公共库,您还需要包含该功能或链接到它的来源。如果找不到该功能,info body struct_typedef会有所帮助。但是,很可能它只是定义了一个Tcl数组,因此struct_new x XYZ可能将x设置为数组。在这种情况下,当您调用SAV_DATA时,您将数组 name 传递给ARG1。检查内容的最简单方法通常是upvar数组:

proc SAV_DATA {varname} {
    upvar $varname x
    puts $x(a)
    puts $x(b)
}

upvar调用将使局部变量x引用父过程上下文中的命名变量 - 因此我们可以让C ++程序员在调用者上下文中调用对该数组的引用。 / p>

如果我们不使用upvar,那么你必须先扩展变量名,然后访问数组元素。这样的代码如下所示:

proc SAV_DATA {varname} {
    puts [set [set varname](a)]
    puts [set [set varname](b)]
}