Also folge ich in Head First C und wir sind in einem Kapitel, wo wir lernen, mehrere Dateien zusammen zu kompilieren. Einer von ihnen ist encrypt.c
.
Die Datei encrypt.h
wiederholt die erste Zeile mit einem Semikolon am Ende, also warum brauche ich sie? Ich verstehe, warum ich Header-Dateien benötigen würde, um das Problem zu beheben, eine Funktion zu verwenden, bevor es definiert wird, also konnte ich # es in einer Datei, die encrypt.c
verwendet, einschließen, aber warum sollte ich es in encrypt.c
brauchen? Ist das nur einer dieser "Gründe"?
Wenn der Inhalt von encrypt.c
vollständig angezeigt wird, brauchen Sie nicht den Header. Aber es ist immer noch eine gute Idee, es einzuschließen, weil:
Sie haben Recht, wenn das alles encrypt.h
deklariert, müssen Sie es nicht in die Datei .c
einfügen.
Sie tun es meistens aus Gründen der Konsistenz.
Stellen Sie sich vor, dass Sie encrypt.c in void encrypt(char *message, int i) { }
Wenn Sie encrypt.h nicht einschließen, werden Sie nicht bemerken, dass die anderen Dateien in Ihrer Anwendung nicht aktualisiert wurden, um den neuen Parameter zu übergeben. Wenn Sie gleichzeitig encrypt.h und encrypt.c aktualisieren, kann der Compiler nach Ihnen suchen.
Dann fügen Sie den Header in eine andere * .c-Datei ein, die der Compiler auf diese Weise kennt, die anderswo die Funktionsdefinition ist.
Das ist wie:
%Vor%Nun weiß der Compiler in der Hauptfunktion nicht, was er mit afun () tun soll. Weil es nicht definiert wurde. Es wird also zu einem Compilerfehler führen.
Sie fügen also die Deklaration am Anfang oder vor der ersten Verwendung hinzu:
%Vor%Wisse, dass der Compiler die Deklaration von afun kennt und hofft, dass sonst die Funktion definiert ist. Mit Header-Dateien ist es möglich, vorkompilierten C-Code zu verwenden. Das einzige, was der Compiler benötigt, ist die Deklaration der Funktion.
Tags und Links c