ifdef相当于TCL

Mik*_*ike 0 bash shell tcl

在TCL中,是否有一个优雅的实现,它将模仿编程语言中经常使用的ifdef.从TCL脚本语言本身来看,我找不到TCL解释器原生支持的方法.

Bry*_*ley 5

除了标准的"if"语句之外,Tcl中没有内置的东西相当于"ifdef".如果您不喜欢标准的"if"语句,tcl将为您提供创建自己的"ifdef"命令的所有基本构建块.

例如,ifdef实际上只是一个查找定义值的if语句.一个非常简单的实现可能看起来像这样:

proc define {name value} {
    set ::defined($name) $value
}

proc ifdef {name script1 else script2} {
    if {[info exists ::defined($name)]} {
        uplevel $script1
    } else {
        uplevel $script2
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

define FOO 1
...
ifdef FOO {
    <do this if FOO is defined>
} else {
    <do this if FOO is NOT defined>
}
Run Code Online (Sandbox Code Playgroud)