我正在使用外部库 - portaudio.h - 在我的项目中,它的一个函数pa_initialize()
向控制台输出了大量信息垃圾。Portaudio:防止打印到控制台c
它可以帮助我调试我的项目,但是当我介绍它时会有问题。
我无法访问库并对其进行编辑。
有没有办法阻止我的代码的特定功能或特定部分打印到控制台?
我上的Visual Studio 2013年
我正在使用外部库 - portaudio.h - 在我的项目中,它的一个函数pa_initialize()
向控制台输出了大量信息垃圾。Portaudio:防止打印到控制台c
它可以帮助我调试我的项目,但是当我介绍它时会有问题。
我无法访问库并对其进行编辑。
有没有办法阻止我的代码的特定功能或特定部分打印到控制台?
我上的Visual Studio 2013年
C编写您可以创建日志内搭一个布尔标志,你可以设置和取消功能。
例如
boolean printOnConsole= false;
void printLog(boolean flag, String data)
{
if(flag)
//print yor data on console
}
pa_initialize
可写入stdout
和stderr
。您可以简单地通过关闭这些流来停用它们。重新激活是问题,因为解决方案不是交叉编译器。下面为我工作与MinGW64:
#include <stdio.h>
int main(){
puts("Hello world!");
fclose(stdout);
puts("Should not be printed.");
freopen("CON", "w", stdout);
puts("Hello again!");
return 0;
}
世界,你好!
你好!
对于MSVC,下面的stdio.h
一部分应该对你是很有意思:
_CRTIMP FILE * __cdecl __iob_func(void);
...
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
MSVC'fopen' wrapps [CreateFile2](https://msdn.microsoft.com/zh-cn/library/windows/desktop/hh449422%28v=vs.85 %29.aspx),包括设备的特殊文件名(见下文)。还有“CON”。 – Youka
好了,经过重新阅读portaudio documentation,我找到了解决办法。
它们确实提供了在构建项目时禁用调试打印的预定义方式,所以我不得不重新构建它,并且它工作正常。
应该已开始出现......
感谢
他说,他“[不]访问库和编辑它。” – rdtsc
我可以通过这种方式禁用我的整个项目中的打印吗? – yagev
是的,你可以,全球范围内设置你的国旗 – CodingRat