Ich stieß auf einen Ratschlag in Stack-Überlauf, der erwähnt, wann zu verwenden und wann nicht, um Benutzeranmeldung weiterzugeben.Wie funktioniert der Compiler und Makefile kommt im Falle der Vorwärtsdeklaration zu spielen
ich auf diese kam: -
struct X; // Forward declaration of X
void f1(X* px) {} // Legal: can always use a pointer/reference
X f2(int); // Legal: return value in function prototype
void f3(X); // Legal: parameter in function prototype
void f4(X) {} // ILLEGAL: *definitions* require complete types`
Die letzte Zeile, die während Kompilierung fehl illegal erklärt.
void f3(X); // Works perfectly fine
ist es so, dass alle Header-Dateien (.hh) werden zunächst durch Compiler gescannt und dann alle .cc Datei gesucht Syntax und symantics, wo wir tatsächlich die
void f3(X);
als nach dem Scannen durch die Header-Dateien definieren Compiler wird die Idee haben über X seine Elementfunktion und Mitglied
Wie hängt das mit Java zusammen? –
Was ist die Frage? –
@LuchianGrigore Die Frage ist mehr auf Forward-Deklaration und Compiler-Sache. Also dachte ich, dass das Konzept mehr oder weniger gleich wäre. Wenn Sie wollen, werde ich das Tag entfernen – Invictus