我正在使用外部庫 - 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