Ist die implizite Funktionsdeklaration in C89 zulässig?

Betrachten Sie dieses C-Programm:

int main()
{
    puts("Hello world!");
    return 0;
}

Dies kompiliert und läuft einwandfrei und soweit ich weiß, ist es legal C89. Da bin ich mir allerdings nicht hundertprozentig sicher. Das Kompilieren im C99-Modus mit Clang informiert mich darüberimplicit declaration of function 'puts' is invalid in C99 (Das lässt mich glauben, dass sich der C-Standard in C99 geändert haben muss, damit die implizite Funktionsdeklaration ungültig wird. Dies versuche ich zu bestätigen.)

Ist die implizite Funktionsdeklaration in C89 zulässig? (Auch wenn es eine schlechte Idee ist, dies zu tun (es sei denn, Sie befinden sich in einer verschleierten C-Code-Herausforderung).)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage