Tcl中的全局变量

Tcl中的全局变量,tcl,Tcl,我试图通过在函数外部声明全局变量(gpio_out_set_3)来使用它(因为该变量将来也可能在其他函数中使用)。在函数内部,我声明了与“global”相同的变量,并试图通过“$gpio\u out\u set\u 3”访问它 我收到一个错误“无法读取”gpio\U out\U set\U 3:没有这样的变量 请帮忙 您的全局变量名为gpio\u out\u set\u 0(与gpio\u out\u set\u 3不同)。您的全局变量名为gpio\u out\u set\u 0(与gpio\u

我试图通过在函数外部声明全局变量(gpio_out_set_3)来使用它(因为该变量将来也可能在其他函数中使用)。在函数内部,我声明了与“global”相同的变量,并试图通过“$gpio\u out\u set\u 3”访问它

我收到一个错误“无法读取”gpio\U out\U set\U 3:没有这样的变量


请帮忙

您的全局变量名为
gpio\u out\u set\u 0
(与
gpio\u out\u set\u 3
不同)。

您的全局变量名为
gpio\u out\u set\u 0
(与
gpio\u out\u set\u 3
不同。

我的猜测是,当您创建变量gpio\u out\u set\u 3时,您并不处于顶级。您正在进行其他程序。因此,gpio输出设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置设置。您正在进行其他程序。因此gpio_out_set_3 in不是真正的全局变量,而是在某些过程中的局部变量。

使用命令在主文件的开头声明所有全局变量

变量gpio\u out\u set\u 3 0x03

提示:我不喜欢全局命令。我总是忘记使用,很难看出哪个变量是全局变量,哪个变量是局部变量。我更喜欢指向全局的
$:


使用命令在主文件开头声明所有全局变量

变量gpio\u out\u set\u 3 0x03

提示:我不喜欢全局命令。我总是忘记使用,很难看出哪个变量是全局变量,哪个变量是局部变量。我更喜欢指向全局的
$:


您确定变量是在调用proc之前定义的吗?您确定变量是在调用proc之前定义的吗?以下代码在我的机器上工作:
set gpio\u out\u set\u 3 0x03;proc port2phy{device}{global gpio_out_set_3;put$gpio_out_set_3;}
是的,它可以工作。你在这里发表的评论应该是答案。以下代码在我的机器上工作:
set gpio\u out\u set\u 3 0x03;proc port2phy{device}{global gpio_out_set_3;put$gpio_out_set_3;}
是的,它可以工作。你在这里发表的评论应该是答案。
set gpio_out_set_3 0x03
proc port2phy { device } {
   global gpio_out_set_3 
   erf_wr devcpu_gcb $gpio_out_set_3 $phy_mdc_gate_en
  }
proc port2phy { device } {
   erf_wr devcpu_gcb $::gpio_out_set_3 $phy_mdc_gate_en
}