Warum erlaubt / erlaubte C implizite Funktionen und typenlose Variablendeklarationen?

Warum ist es für eine Sprache sinnvoll, implizite Deklarationen von Funktionen und typenlosen Variablen zuzulassen? Ich verstehe, dass C alt ist, erlaube aber, Deklarationen und default to wegzulassenint() (oderint bei variablen) kommt mir schon damals nicht so vernünftig vor.

Warum wurde es ursprünglich eingeführt? War es jemals wirklich nützlich? Wird es tatsächlich (noch) verwendet?

Hinweis: Mir ist klar, dass moderne Compiler Warnungen anzeigen (abhängig davon, welche Flags Sie übergeben), und Sie können diese Funktion unterdrücken. Das ist nicht die Frage!

Beispiel:

int main() {
  static bar = 7; // defaults to "int bar"
  return foo(bar); // defaults to a "int foo()"
}

int foo(int i) {
  return i;
}

Antworten auf die Frage(5)

Ihre Antwort auf die Frage