Ответ 1
Здесь версия GNU printf
... вы можете видеть, что она проходит в stdout
до vfprintf
:
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
}
Здесь ссылка на vfprintf
... здесь происходит все "магия" форматирования.
Единственное, что действительно "отличается" от этих функций, это то, что они используют varargs для получения аргументов в списке аргументов переменной длины. Кроме этого, они просто традиционные C. (Это контрастирует с эквивалентом Pascal printf
, который реализуется с конкретной поддержкой в компиляторе... по крайней мере, это было в тот же день.)