有没有一种方法可以在不使用任何宏的情况下有条件地使所有 printf 语句静音?我想在不触及现有代码的情况下完成静音,但在我的模块中添加一行,这将简单地禁用源代码中已经存在的所有 printf。
谢谢!
有没有一种方法可以在不使用任何宏的情况下有条件地使所有 printf 语句静音?我想在不触及现有代码的情况下完成静音,但在我的模块中添加一行,这将简单地禁用源代码中已经存在的所有 printf。
谢谢!
如果您想取消所有输出到stdout
via printf
, puts
,putchar
等,您可以使用freopen(3)
将其重定向到一个位桶,例如:
// On Unix and Unix-like systems:
freopen("/dev/null", "w", stdout);
// On Windows:
freopen("NUL", "w", stdout);
在 Linux、BSD 或其他 Unix 上,您可以创建一个共享库,它提供自己的printf
并包装 C 库printf
。
然后你可以在 C 库之前使用LD_PRELOAD=mylib.so ./myprogram
通过将其添加到源代码中,将库 printf 替换为您自己的实现:
int printf(const char * restrict format,...) { return 0; }