我使用Tcl 8.6(windows),我无法注册和使用新频道
std::ofstream file("1.txt");
Tcl_Channel kanal = Tcl_CreateChannel(Type, "myChann", file, TCL_WRITABLE);
Tcl_RegisterChannel(interp, kanal);
file.close();
,类型为
Tcl_ChannelType* Type = new Tcl_ChannelType();
Type->closeProc = closeProc;
Type->inputProc = inputProc;
Type->outputProc = outputProc;
Type->typeName = "My own chann";
Type->version = TCL_CHANNEL_VERSION_2;
函数很简单,它们只有std :: cout
我用脚本运行解释器
"chan puts myChan whatever"
没有任何事情发生,没有来自解释器的错误,没有输出(控制台,文件)。 我不知道怎么咬这个, 这是第一个目标,创造新的香奈儿并使用它, 第二个是用我自己的频道替换TCL_STDOUT(它可以是std :: ofstream), 这样当我用
运行翻译时"puts WhatEver"
该字符串转到std :: ofstream
答案 0 :(得分:0)
可能你没有冲洗输出。
可以使用
完成flush myChan
您还可以将频道配置为在行尾或在写入任何内容时进行刷新:
chan configure myChan -buffering line
(或none
)。 stdout默认配置为-buffering line