#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; }