[英]How to insert C++ variable into TCL script program?
在NS2中,是否可以将C ++变量嵌入到TCL脚本中? 例如,在TCL中,像这样设置路由协议, set opt(rt) XXX
XXX
set opt(rt) XXX
为C ++程序中定义的变量,例如
if(CONDITION==1)
XXX = "FLOODING";
if(CONDITION==2)
XXX = "AODV";
...
最简单的方法是使用Tcl_LinkVar
将C ++中的char *变量(不支持std :: string)耦合到Tcl。 这样,您要做的就是更改C ++变量并调用Tcl_UpdateLinkedVar
以允许Tcl注意到变量已更改。 如果您从未在变量上设置任何跟踪,则无需使用Tcl_UpdateLinkedVar
,但实际上它们是一种很常见的机制,因此建议您进行调用。 请注意, Tcl_UpdateLinkedVar
是对Tcl解释器的可重入调用。 应该注意确保您运行的任何跟踪都不会触发循环回到您的代码中……
// Setup (done once)...
Tcl_LinkVar(interp, "XXX", &XXX, TCL_LINK_STRING|TCL_LINK_READ_ONLY);
// Your code ...
if(CONDITION==1)
XXX = "FLOODING";
if(CONDITION==2)
XXX = "AODV";
// Notify Tcl ...
Tcl_UpdateLinkedVar(interp, "XXX");
如果希望Tcl变量XXX
设置更改C ++变量XXX
,则需要格外小心。 删除对TCL_LINK_READ_ONLY的使用, 并确保始终使用ckalloc
为XXX
的字符串分配内存 (因为Tcl在设置C ++变量时将使用匹配的ckfree
来处理旧的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.