繁体   English   中英

如何将C ++变量插入TCL脚本程序?

[英]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的使用, 确保始终使用ckallocXXX的字符串分配内存 (因为Tcl在设置C ++变量时将使用匹配的ckfree来处理旧的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM