Как я могу настроить fprintf для включения отключить - PullRequest
0 голосов
/ 16 мая 2019

Я хочу настроить fprintf функцию для включения / выключения ведения журнала

Мой проект использует 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

Как создать пользовательскую log функцию, которую можно включить / отключить с помощью ENABLE_LOG

1 Ответ

1 голос
/ 16 мая 2019

Вам нужно использовать 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

Также обратите внимание, что уже есть функция C ++ с именем log.Вы можете рассмотреть другое имя (особенно если вы используете страшный using namespace std; - даже если ваш код выглядит как чистый C).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...