如何从.cc文件中访问TCL脚本中的值
how to access value in tcl script from .cc files
我试图从。cc获得价值。在我的档案里,AgentCPU.h和AgentCPU.cc有一个名为"npkts_"的整数和一个用于接收数据包的函数"recv"当我终于完成了一个包,我将增加"npkts_"1进一步,在我的tcl脚本中,我想访问"npkts_"我的代码是这样的
set cpu [new AgentAgentCPU]
puts [format "%d" "$cpu set npkts_"]
但是,它们的值是不正确的当我像这样构造我的AgentCPU时,它的值是相同的
AgentCPU::AgentCPU(): Agent(PT_TASK)
{
...
npkts_=199;
...}
的值为199,在"recv"函数中,我使用"printf"来检查是否有问题
...
npkts_++;
printf("npkts is %dn",npkts);
...
和这里的值是正确的,每次我收到数据包将增加"npkts"有代码错误吗??另一方面,我使用另一种方式进行调试在我的"recv"函数
...
npkts_++;
Tcl& tcl = Tcl:;instance();
tcl.evalf("puts " npkts is %d""",npkts_);
..
这样,消息将为1,并停止打印有人能帮我一下吗?如何从。cc文件中获得正确的值?任何建议都会非常感谢!!
在Tcl中,每个脚本求值都会产生一个结果值(它可以是空值,也可以是其他值,这取决于发生了什么)。结果值可以通过Tcl_GetStringResult
或Tcl_GetObjResult
从解释器上下文中检索;前者(有效地)产生一个const char *
,后者产生一个Tcl_Obj *
(即Tcl值参考);名称Tcl_Obj
是由于历史原因)。该值一直存在,直到对下一段脚本进行评估。不要修改返回的Tcl_Obj*
(通过Tcl的API除外),除非你确切地知道你在做什么(即,编写代码来扩展Tcl本身)。使用Tcl_GetIntFromObj
可以有效地从Tcl_Obj*
中检索整数(假设值是整数),使用Tcl_GetDoubleFromObj
可以有效地检索浮点数,使用Tcl_GetString
或Tcl_GetStringFromObj
可以从Tcl_Obj*
中检索const char *
(稍有不同的API)。
在Tcl中也有变量。你可以直接用Tcl_GetVar
来读取它们——它返回另一个const char *
——或者Tcl_GetVar2Ex
(有一个丑陋的名字,但方便的API)返回另一个Tcl_Obj *
。
这些都是C API函数,并且都接受Tcl_Interp *
(这是对Tcl计算上下文的引用,它总是绑定到单个线程)。我不能告诉你它们是如何被包装在c++ API中的
你正在使用一些奇怪的c++库,你没有给出任何信息。但是,当从C/c++程序中使用Tcl时,当您计算一些Tcl代码时,结果将附加到解释器对象中。您可以使用Tcl_GetObjResult访问它,然后使用适当的Tcl_GetIntFromObj或Tcl_GetDoubleFromObj或其他方法将Tcl_Obj值读取为某种c++形式。
- 如何通过cpp程序运行shell脚本
- 在程序中编写脚本来编写和编译代码
- 如何在c++中使用system()来运行包含空格的python脚本
- 在cygwin中运行c++脚本时发生错误
- 如何将真正的字符串从python c-api转换为python脚本
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 在原子中使用犰狳与脚本
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- CANoe - 无法在 CAPL 脚本中打开.dll
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 将数组/向量发送到 c++ 脚本的 cython 示例
- 脚本的多重定义::LState
- 从C++应用获取PowerShell脚本输出
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- 使用正在调用TCL脚本的CPP代码的GCC编译
- 使用 TCL 编写嵌入式 SQLite 脚本
- 通过c++控制台提供TCL脚本控制窗口
- 使用Tcl库和/或Tcl内部组件的Tcl脚本非插装调试器
- 如何从.cc文件中访问TCL脚本中的值