加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在运行时创建一个mex函数printf?

发布时间:2020-12-16 10:35:05 所属栏目:百科 来源:网络整理
导读:我有一个在我的MATLAB脚本中调用的mex文件. mex函数可能需要一段时间才能运行,因此为了防止我的代码“在没有任何输出的情况下停在那里”,我在mex文件中放入了许多printf语句来输出有关正在处理的数据的一些运行信息. 但是当我调用mex函数时,它不会打印任何东
我有一个在我的MATLAB脚本中调用的mex文件. mex函数可能需要一段时间才能运行,因此为了防止我的代码“在没有任何输出的情况下停在那里”,我在mex文件中放入了许多printf语句来输出有关正在处理的数据的一些运行信息.

但是当我调用mex函数时,它不会打印任何东西并在int运行期间保持不变.最后,在完成其工作后,它将打印出我想要的所有信息 – 不是在运行时,而是在完成之后.这不是我想要的.

所以我想知道如何不仅使printf成为我想要的东西,而且在我想要的时候也知道printf.

解决方法

是的,mexPrintf就是您所需要的.但请注意,命令窗口不会强制刷新它使用的缓冲区,通常会在打印消息之前导致很长的延迟.如果在调用mexPrintf后开始繁重的计算,就会发生这种情况.

解决方法是使用

mexEvalString("drawnow;")

每次打电话给mexPrintf后.

如果您发现没有吸引力,可以创建一个调用两者的宏:

#define printfFnc(...) { mexPrintf(__VA_ARGS__); mexEvalString("drawnow;");}

这使用了可变参数宏__VA_ARGS__.它可能不是标准的一部分,但似乎是在GCC和Visual C中.只需调用printfFnc,就像调用printf(或mexPrintf)一样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读