C 레벨에서 Tcl 인터프리터는 Tcl_Interp *
유형의 핸들로 표시됩니다 (이는 불투명 한 구조를 가리키는 것처럼 처리되어야 함). Tcl API를 사용하는 사람들은 일반적으로 interp
이라는 이름을 부여 받았지만 그다지 중요하지는 않습니다. 당신은 그런 핸들을 한 후에는 사용
int returnCode = Tcl_Eval(interp, "puts \"Hello World\"");
이 몇 가지 코드를 (우리가 상수 C 문자열 내부에 큰 따옴표를 넣고 있기 때문에 백 슬래시가) 실행합니다. 실행 코드가 성공적으로 끝나면 리턴 코드는 TCL_OK
이고, 잘못된 코드가 있으면 TCL_ERROR
이됩니다. OK 경우에는 Tcl_GetObjResult(interp)
을 사용하여 결과 값을 얻습니다.이 경우 Tcl_GetString
을 사용하여 인쇄 결과의 문자열 버전을 얻을 수 있습니다. 오류가 발생한 경우 동일한 기능 (예 : Tcl_GetObjResult
, Tcl_GetString
)을 사용하여 오류 메시지를 검색합니다. 가능한 다른 반환 코드가 있지만 대개는 볼 수 없습니다.
물론 puts
의 결과는 성공시 빈 문자열입니다. 메시지는 인쇄되지 않고 리턴되지 않습니다.
어떻게 해석기 핸들을 얻습니까? 자, 코드가 Tcl과 어떻게 통합되어 있는지에 달려 있습니다. Tcl이 load
인 공유 라이브러리를 작성하는 경우 초기화 함수의 유일한 인수입니다. 반면에 Tcl을 임베드한다면 어떤 시점에 Tcl_CreateInterp()
을 호출하고 새로 생성 된 인터프리터에 핸들을 반환합니다. 당신이하고있는 일은 보통 아주 명백합니다.
. 'C'프로세스의 내용은 tcl 명령을 실행하기 위해 수신시 TCL 프로세스에서 '평가'될 수있는 텍스트입니다. – Sharad
자세히 설명해 주시겠습니까? 당신이 언급 한 것이 무엇이든간에 그것은 바람직하지만, 어떻게해야 하는가? 그것은 질문입니다. –