2012-01-11 79 views
0

在NS2中,有沒有辦法將C++變量嵌入到TCL腳本中?例如,在TCL,這樣設置的路由協議,set opt(rt) XXXXXX可以是被C++定義程序++一個變量,如如何將C++變量插入TCL腳本程序?

if(CONDITION==1) 

    XXX = "FLOODING"; 

if(CONDITION==2) 

     XXX = "AODV"; 

... 
+0

你想要在兩種語言中連接變量嗎?還是你在做字符串操作後生成源代碼?我會假設前者;後者很無聊...... – 2012-01-11 15:48:08

回答

0

的最簡單的方法是使用Tcl_LinkVar以耦合的char *變量C( 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將使用匹配ckfree設置C++變量時處置舊的)。

相關問題