Es ist auch möglich Funktionen zuerst nur zu deklarieren, um
sie später zu definieren. Dies nennt man eine explizite
Deklaration, im Gegensatz zur impliziten Deklaration,
die erfolgt, wenn man eine Funktion definiert, die noch nicht
explizit deklariert wurde. Nötig wird so etwas z.B. wenn zwei
Funktionen sich gegenseitig aufrufen - wenn eine Funktion noch nicht
deklariert ist, kann sie noch nicht benutzt werden. Ein anderer
Verwendungszweck entsteht bei einer Modularisierung eines Programmes,
was im Kapitel Programmstrukturierung besprochen wird
.
Eine
Deklaration ohne Definition ist - einfach gesprochen - eine
Definition ohne den Anweisungsteil, statt dessen mit Semikolon
abgeschlossen, z.B.
int funktA(int a, int b);
Hierbei sind die Angaben der Parameternamen nur der Lesbarkeit halber vorhanden, sie können auch weggelassen werden:
int funktA(int, int);
Auch ist es möglich (i.d.R. aber nicht empfehlenswert), eine Funktion mehrfach zu deklarieren. Dabei dürfen sich die Namen der Parameter ändern, auch müssen die Namen bei der Definition nicht mit denen einer Deklaration übereinstimmen.
Die bei der Deklaration gemachten Angaben reichen dem Compiler, um im folgenden bei Aufrufen der Funktion eine Überprüfung bzgl. Parameterzahl, Parametertypen und Rückgabewert zu machen. Sobald eine solche Deklaration angegeben wurde, geht der Compiler davon aus, daß eine Funktion dieses Namens, dieses Rückgabewertes und dieser Signatur, d.h. Anzahl, Typen und Reihenfolge der Parameter, vorhanden sein wird. Diese kann dabei in der gleichen oder aber auch in einer anderen Datei definiert sein, doch dazu wiederum später mehr.