Tcl:编译中的错误

Tcl:编译中的错误,tcl,crc,Tcl,Crc,我根本不知道什么是Tcl,我知道用C/C++编程。这是我第一次见到Tcl 我当时正在用C/C++开发一些软件,文档中给出了一段Tcl代码来解释如何计算CRC-8-ATM。我必须实现这段代码的C版本。我想了解这段代码是如何工作的,所以我经常在那里运行代码,但是当我提交代码时,我得到一个错误,如下所示: wrong # args: should be "proc name args body" while executing "proc crc8{}" (file "t.tcl" l

我根本不知道什么是Tcl,我知道用C/C++编程。这是我第一次见到Tcl

我当时正在用C/C++开发一些软件,文档中给出了一段Tcl代码来解释如何计算CRC-8-ATM。我必须实现这段代码的C版本。我想了解这段代码是如何工作的,所以我经常在那里运行代码,但是当我提交代码时,我得到一个错误,如下所示:

wrong # args: should be "proc name args body"
    while executing
"proc crc8{}"
    (file "t.tcl" line 1)
有人能帮我解决这个错误吗?最后打印CRC值

使用文件中给出的CRC-8-ATM计算CRC的Tcl代码。
Tcl是面向单词的,因此它对空格很敏感。大括号分隔单词,因此在进程名和空arg列表后需要一个空格。换行符是命令的终止符,因此要为proc命令提供足够的参数,必须将proc主体的左大括号与
proc
命令放在同一行上

类似地,
set poly_table
命令的大括号必须与
set
命令位于同一行


Tcl语法非常一致。只有12条规则。您可以在

上阅读它们问题在于以下几行:

proc crc8{}
{
因为Tcl非常关心在事物之间放置空格,并且将换行符视为语句终止符,所以您必须将它们编写为:

proc crc8 {} {
(您也可以在行尾使用反斜杠,以防止换行符成为终止符,但这就不那么优雅了。而且,在过程名称和正式参数列表之间仍然需要一个空格。使用完整的“一个真大括号”可以节省大量工作。)


set poly_table
foreach
也会出现类似的问题。将下一行的
{
移动到前一行的末尾,并用空格将其与前一行隔开。

正如错误消息所说,您应该将代码的前两行更改为一行,“proc crc8{}{”。重点是,“proc”、函数名(“crc8”)、参数({})和代码体的开头({”)应该存在于一行中。
proc crc8 {} {