有沒有一種方法可以有條件地靜音所有我的printf語句,但是,不使用任何宏?我想在不觸及已有代碼的情況下完成靜音,但在模塊中添加一行可以禁用源代碼中已有的所有printf。靜音printf無宏
謝謝!
int printf(const char * restrict format,...) { return 0; }
有沒有一種方法可以有條件地靜音所有我的printf語句,但是,不使用任何宏?我想在不觸及已有代碼的情況下完成靜音,但在模塊中添加一行可以禁用源代碼中已有的所有printf。靜音printf無宏
謝謝!
int printf(const char * restrict format,...) { return 0; }
如果您想通過printf
,puts
,putchar
等,以抵消所有的輸出到stdout
C庫的加載它,你可以使用freopen(3)
將其重定向到一個位鬥,例如:
// On Unix and Unix-like systems:
freopen("/dev/null", "w", stdout);
// On Windows:
freopen("NUL", "w", stdout);
加給你的源代碼替換庫的printf用自己的實現printf
。
,那麼你會提前使用LD_PRELOAD=mylib.so ./myprogram
在Linux,BSD或其他Unix,你可以創建一個共享庫,它提供了自己的printf
和包裝的C庫:
你只是想靜音'printf's或每個輸出到'stdout'嗎? – rwos 2012-08-16 15:20:24
您是否需要恢復正常行爲,所以只需靜音一段時間,然後再次執行正常的printf輸出? – 2012-08-16 15:30:27
@rwos:最好只是printf。 – Scranton 2012-08-16 17:37:42