Лучший способ реализовать функцию

#c #function

#c #функция

Вопрос:

Наличие подписи функции :

 int my_print(const char *format, ...);
  

Я хочу реализовать это путем вызова printf с аргументами, переданными в my_print и fflush(stdout);

Как вы думаете, каков наилучший способ ее реализации?

Комментарии:

1. Я думаю, что использование макроса может быть проще. 😛

Ответ №1:

Вы можете использовать vprintf . Он принимает a va_list , который вы получаете в my_print :

 int my_print(char * format, ...)
{
  va_list args;
  va_start (args, format);
  int ret = vprintf (format, args);
  va_end (args);
  return ret;
}
  

Комментарии:

1. Считается хорошей идеей создавать v* версии ваших функций, поэтому, если кто-то хочет обернуть вашу функцию, он может. Итак int my_vprint(char *format, va_list args) { int ret = vprintf(format, args); fflush(stdout); return ret; } int my_print(char *format, ...) { va_list args; va_start(args, format); int ret = my_vprint(format, args); va_end(args); return ret; }