Warum hat C ++ niemals die Verwendung von Funktionen zugelassen, bevor sie deklariert wurden? [geschlossen]

OK, ich weiß, das sieht aus wie ein Duplikat vonWarum müssen Funktionen deklariert werden, bevor sie verwendet werden? Es scheint jedoch nicht so, als würden die vorhandenen Antworten alle Details vollständig adressieren.

Ich weiß, dass C ++ ursprünglich in den 80er Jahren entwickelt wurde, damit es in einem Durchgang übersetzt werden konnte, weil Computer langsam waren. OKAY. Aber der neueste Standard wurde 2011 veröffentlicht. Ich verstehe nicht, warum C ++ - Compiler jetzt Dinge nicht ausführen können, die mehrere Durchgänge erfordern. Es würde immer noch die Leistung beeinträchtigen, aber nur, wenn es tatsächlich notwendig wurde. Folgendes würde also immer noch nur einen einzigen Durchgang erfordern:

void foo();
int main() { foo(); }
void foo() {}

Im folgenden Fall könnte der Compiler zwei machen (und langsamer sein), da er nicht weiß, obfoo ist eine Funktion oder ein Typ, bis die folgende Deklaration angezeigt wird:

int main() { foo(); }
void foo() {}

und wenn Sie versucht haben, eine Funktion zu verwenden, ohne sie vorher zu deklarieren, und die Deklaration überhaupt nicht in der aktuellen Übersetzungseinheit ist,dann es wäre ein fehler. Wenn es sich jedoch um dieselbe Übersetzungseinheit handelt, kann der Compiler einfach zusätzliche Durchläufe durchführen.

Mein Kollege argumentiert, dass eine solche Funktion viel Entwicklerzeit sparen und Probleme mit der Deklaration und Definition vermeiden würde, die nicht übereinstimmen. Und ich bin mir sicher, dass dies viele Male vorgeschlagen und jedes Mal abgelehnt wurde. Was ist dertatsächliche Begründung hinter der ablehnung,d.h., die Begründung des Ausschusses?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage