Unterschied zwischen Deklaration und Definition? [Programmieren][C]

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der einfachere von beiden Begriffen ist wohl die Definition: Es handelt sich - einfach gesagt - um die eigentliche Funktion oder die eigentliche Variable. Beispiel:

int a;
int b=5;
int c(int d)
{
    static int e=5;
    e+=d;
    return e+1;
}

Bei C werden beim Compilieren erst die einzelnen C-Dateien in Assemblercode verwandelt und danach mehrere Assemblerdateien (in mehreren Schritten) zu einem Programm zusammengefasst. Im Gegensatz zu zum Beispiel Java weiß der Compiler bei C nichts davon, was in anderen C-Dateien vorkommt. Er kann bei einem Projekt, das aus zwei C-Dateien besteht, also beim Compilieren der ersten Datei nicht wissen, dass die zweite Datei zum Beispiel eine bestimmte Funktion enthält.

Aus diesem Grund gibt es bei C die Deklaration. Eine Deklaration gibt nur an, dass irgendwo im Projekt eine bestimmte Funktion oder Variable existiert. Die Deklarationen für das Beispiel oben sähen folgendermaßen aus:

extern int a;
extern int b;
int c(int d);

Ferner gibt es bei C/C++ noch einen Preprozessor. Dieser wird streng genommen vor dem eigentlichen Compilieren ausgeführt, ist eigentlich eine Art Textverarbeitung und kann auch für andere Zwecke als für C-Programme benutzt werden. Dieser bearbeitet Anweisungen wie "#include"; diese Anweisung wird vom Preprozessor durch den Inhalt einer kompletten Header-Datei ersetzt. Solche Dateien wiederum enthalten ganz viele Deklarationen. Dadurch erspart man sich das Eintippen der ganzen Deklarationen, die in einer Header-Datei vorkommen.

Was möchtest Du wissen?