2012-01-11 2 views
0

NS2에서 C++ 변수를 TCL 스크립트에 임베드하는 방법이 있습니까? 예를 들어, TCL,이 같은 설정 라우팅 프로토콜은 set opt(rt) XXXXXX는 C++에 정의 된 프로그램 변수와 같은TCL 스크립트 프로그램에 C++ 변수를 삽입하는 방법은 무엇입니까?

if(CONDITION==1) 

    XXX = "FLOODING"; 

if(CONDITION==2) 

     XXX = "AODV"; 

... 
+0

두 언어의 변수를 연결하는 방법을 찾았습니까? 또는 문자열 조작을 수행 한 후 소스 코드를 생성합니까? 나는 전자를 추측 할 것이다. 후자는 지루하다. –

답변

0

가장 쉬운 방법은 C에서 부부로 문자 * 변수를 Tcl_LinkVar을 사용하는 것입니다 ++ (수 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"); 

당신이 C++ 변수 XXX을 변경하려면 Tcl의 변수 XXX의 설정을 원한다면 ... 당신이 실행 흔적 다시 코드로 루프를 유발하지 않도록주의해야한다, 당신이 취할 필요 추가 치료. 당신은 항상 (티클은 C++ 변수를 설정할 때 이전 처분 일치 ckfree를 사용하기 때문에) XXX에있는 문자열 메모리를 할당 할 ckalloc를 사용을 보장 TCL_LINK_READ_ONLY 의 사용을 놓습니다.

관련 문제