Вот простая функция, удаленная и определенная с использованием синтаксиса старого стиля:
#include <stdio.h>
void
error(message,a1,a2,a3,a4,a5,a6,a7)
char *message;
char *a1,*a2,*a3,*a4,*a5,*a6,*a7;
{
fprintf(stderr,message,a1,a2,a3,a4,a5,a6,a7);
}
int main ()
{
error("[ERROR %d]: %s.\n",110,"Connection timed out");
return 0;
}
Она может быть скомпилирована и правильно запущена для печати:
[ОШИБКА 110]: время соединенияout.
Я читал, что у этого стиля нет ассоциированного прототипа, но как он может автоматически конвертировать int в char * во время выполнения, и даже если предоставленных аргументов меньше, чем объявлено?