0

ただし、マクロを使用せずに、すべての printf ステートメントを条件付きでミュートする方法はありますか? 既存のコードに触れずにミュートを実行したいのですが、モジュールに行を追加して、ソースコードに既に存在するすべてのprintfを単に無効にします。

ありがとう!

4

3 に答える 3

3

、、などをstdout介してすべての出力を無効にしたい場合は、ビットバケットにリダイレクトするために使用できます。printfputsputcharfreopen(3)

// On Unix and Unix-like systems:
freopen("/dev/null", "w", stdout);
// On Windows:
freopen("NUL", "w", stdout);
于 2012-08-16T15:23:22.483 に答える
2

Linux、BSD、またはその他の Unix では、独自printfの C ライブラリを提供してラップする共有ライブラリを作成できますprintf

次に、次を使用してCライブラリの前にロードしますLD_PRELOAD=mylib.so ./myprogram

于 2012-08-16T15:22:49.627 に答える
0

これをソース コードに追加して、ライブラリ printf を独自の実装に置き換えます。

int printf(const char * restrict format,...) { return 0; }
于 2012-08-16T15:21:32.020 に答える