# A1-5 Ergebnisse ## a) 1. `int i;` Definition Der Integer `i` wird deklariert und erhält eine Speicheradresse, ist also auch definiert. 2. `extern int summe(int a, int b);` Deklaration Die Existenz der Funktion wird durch den Funktionskopf deklariert. Die Definition der Funktion erfolgt jedoch durch einen Funktionskörper der hier nicht existiert. 3. `int summe(int a, int b) { return a + b; }` Definition Es ist sowohl ein Funktionskopf, als auch ein Funktionskörper vorhanden. Somit handelt es sich um eine Definition. 4. `extern int k;` Deklaration `extern` bedingt eine Deklaration ohne Definition. Es wird festgelegt, dass die Deklaration an einem anderen Ort stattfindet. 5. `typedef int Entfernung ;` Deklaration Es wird nur ein neuer Datentyp deklariert, ohne dass ein Wert definiert wird. 6. `Entfernung hannoverNachHamburg;` Definition Ähnlich wie bei 1.: es wird eine Variable deklariert **und** definiert ## b) `#include` bzw Header-Dateien dürfen lediglich Deklarationen enthalten, da ansonsten eine Definition mehrfach erfolgen könnte, was zu einem Compilerfehler führt. ## c) Bei dem Einbinden einer unnötigen Header-Datei wächst die Dateigröße der Objektcode-Datei `main.o` **nicht**. Die Header-Datei wird zwar vom Präprozessor eingebunden, jedoch enthält diese nur Informationen für den Compiler, dass die Funktion `unnoetige_funktion(void)` an einem anderen Ort definiert wird. Wenn diese Funktion niemals verwendet wird, wird vom Kompilierer auch kein Eintrag gemacht, dass sie benötigt wird. Somit bleibt die Dateigröße unverändert.