首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将C++变量插入到TCL脚本程序中?

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

Stack Overflow用户
提问于 2012-01-11 08:48:39
回答 1查看 1.8K关注 0票数 0

在NS2中,是否有任何方法将C++变量嵌入到TCL脚本中?例如,在TCL中,像这样设置路由协议,set opt(rt) XXX XXX可以是C++程序中定义的变量,例如

代码语言:javascript
复制
if(CONDITION==1) 

     XXX = "FLOODING";

if(CONDITION==2) 

         XXX = "AODV";

...
EN

回答 1

Stack Overflow用户

发布于 2012-01-11 15:41:13

最简单的方法是使用Tcl_LinkVar将C++ (std::string不支持)中的char*变量耦合到Tcl。这样,您所要做的就是更改C++变量并调用Tcl_UpdateLinkedVar以允许Tcl注意到变量已经更改。如果没有在变量上设置任何跟踪,则不需要使用Tcl_UpdateLinkedVar,但它们实际上是一种非常常见的机制,因此建议进行调用。请注意,Tcl_UpdateLinkedVar是对Tcl解释器的重入调用;应该注意确保运行的任何跟踪不会触发循环回到代码…中。

代码语言:javascript
复制
// 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来处理旧的ckfree)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8816455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档