Декларация C99 printf()
равна
int printf(const char *restrict, ...);
но большинство компиляторов также примут
int printf(const char *, ...);
См. Также C99, раздел 7.1.4, §2:
При условии, что библиотечная функция может быть объявлена без ссылки на любой тип, определенный в
заголовок, также допустимо объявить функцию и использовать ее, не включая ее
связанный заголовок.
Примечание: В этом случае квалификатор restrict
в сочетании с const
обещает компилятору, что строка формата никогда не изменяется в пределах printf()
, даже если указатель снова передается как один из Вариативные аргументы.