Здесь простая функция, делятся и определяются с помощью синтаксиса старого стиля:
#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;
}
Он может быть скомпилирован и корректно выполнен для печати:
[ERROR 110]: время ожидания подключения.
Я читал, что этот стиль не имеет связанного прототипа, но как он может автоматически преобразовывать int в char * во время выполнения, и даже предоставленные аргументы меньше, чем объявлено?