繁体   English   中英

在Matlab mex代码中抑制mexPrintf

[英]suppressing mexPrintf in matlab mex code

我有从Matlab脚本调用的mex代码。 为了调试代码,我放置了很多mexPrintf语句,但是出于计时目的,现在我不想在mex代码调用中进行任何I / O(因为I / O需要很多时间)。 什么是抑制我的代码中的mexPrintf调用的最简单最好的方法,从而使这些语句根本不执行,而不必删除/注释这些语句? (我不想删除/注释这些语句并重新编译我的mex代码,因为以后可能会需要这些调试语句,并且我不想一直反复进行修改和构建代码的迭代) 。

有没有可以解决问题的编译器开关? 或一些预处理程序语句?

谢谢!

您无法关闭mexPrintf 您需要修改您的代码。 定义例如DEBUG标志来决定何时打印内容,何时不打印。 例如,具有正常的printf功能

#include <stdio.h>
#include <stdlib.h>

//#define DEBUG
#ifdef DEBUG
#define MPRINT(...) printf(__VA_ARGS__);
#else
#define MPRINT(...)
#endif

int main()
{
  MPRINT("%d\n", 5);
}

如果现在运行,则不会打印任何内容。 但是,如果您取消注释#define DEBUG语句,则会显示5。

另外,您可以在以下子句中包含所有mexPrintf调用:

#ifdef DEBUG
mexPrintf(...);
#endif

同样,如果未定义DEBUG则不会打印任何内容。 但这还需要更多工作。

您也可以执行类似的操作,而无需通过使用常规的if语句重新编译您的mex文件,并将verbose参数传递给mex文件。 但是, if过于频繁地执行if语句,这仍然会对性能产生影响。 因此,多进行DEBUG这是标准的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM