我如何自定义fprintf以启用禁用

How I can custom fprintf for enable disable

本文关键字:启用 fprintf 自定义      更新时间:2023-10-16

我想自定义fprintf函数以启用/disable登录

我的项目使用makefile。

#define ENABLE_LOG 
void log(fmt, ...){
  #ifdef ENABLE_LOG
    va_list vargs;
    va_start(vargs, fmt);
    fprintf(stderr, vargs);
    va_end(vargs);
  #endif
}
log("Test"); # build error
log("TEST %d", 1); # build error

如何创建可以使用ENABLE_LOG

启用/禁用的自定义log函数

您需要使用vfprintf()。另外,我将制作一个空的宏,以避免打电话给空功能。

#define ENABLE_LOG 
#ifdef ENABLE_LOG
void log(const char *fmt, ...) {
    va_list vargs;
    va_start(vargs, fmt);
    vfprintf(stderr, fmt, vargs);
    va_end(vargs);
}
#else
#define log(fmt, ...)
#endif

另外,请注意,已经有一个名为log的C 功能。您可能会考虑一个不同的名称(尤其是如果您使用可怕的using namespace std; - 即使您的代码看起来像纯c。(