tcl.eval,tcl.evalc,tcl.eval and tcl.evalf 的区别

通过Tcl实例,一共有四种不同的方法来调用一个OTcl命令。他们在调用参数方面有本质的区别。每个函数都传递一个字符串(string)给解释器,然后解释器通过一个全局文本来识别这个字符串。如果解释器返回TCL_OK,则这些函数将会返回一个相应的OTcl过程。反过来,如果解释器返回TCL_ERROR,则这些函数将调用tkerror{}。用户可以重载(overload)这个过程,以便有选择地忽略某些类型的错误。

     ●tcl.eval(char* s)调用Tcl_GlobalEval(),通过解释器执行s。
     ●tcl.evalc(const char* s)保存字符串参数s。它将字符串s复制到中间缓冲区;然后再在中间缓冲区里面调用之前的
eval(char* s)。
     ●tcl.eval()假设命令已经存储在internal bp_类中;它直接调用tcl.eval(char* bp_)。缓冲区自己的指针可以通过
tcl.buffer(void)方法获得。
     ●tcl.evalf(const char* s, . . . )类似于一个Printf(3)。它在内部使用vsprintf(3)来创建输入的字符串。

     作为一个例子,这里有一些使用上面所讲函数的使用方法:
      Tcl& tcl = Tcl::instance();
      char wrk[128];
      strcpy(wrk, "Simulator setNumberInterfaces_ 1");
      tcl.eval(wrk);
      sprintf(tcl.buffer(), "Agent/SRM setrequestFunction_ %s", "Fixed");
      tcl.eval();
      tcl.evalc("puts stdout hello world");
      tcl.evalf("%s request %d %d", name_,sender, msgid);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值