C-Programmierung

Java vs C Modulkonzept

Konventionen | | Modulkonzept Beispiel

Dadurch dass C/C++ eine Compilersprache ist, wird ein entsprechendes Compilerkonzept verwendet, um eine Modularisierung des Quellcodes zu erreichen.

In Java entspricht automatisch eine Klasse einem Modul. Mehrere Module werden in sog. jar-Files zusammengefasst.

In C/C++ kann ein Modul eine beliebige Ansammlung von Funktionen und Definitionen enthalten.

Das C/C++ Modulkonzept verfolgt die strikte Trennung von Funktionsdeklaration (Signatur, Prototyp?) und Funktionsdefinition (Implementierung, Funktionsrumpf, Anweisungsblock). D.h. Die Prototypen werden in sog. Headerdateien (.h) gespeichert, die Funktionsimplementierung in den eigentlichen Modulen (.cpp).

Es gibt ein Hauptmodul, welche die main Funktion enthält, die bei Programmstart angesprungen wird. Und es gibt eine beliebige Anzahl von weiteren Modulen, welche Funktionen bzw. Prozeduren enthalten, die vom C/C++ Compiler zu sogenannten Objektdateien (.o) übersetzt werden. Mehrere Objektdateien können zu einem Archiv (.a) zusammengefasst werden. Der Linker verbindet die übersetzten Objektdateien oder Archive bzw. Bibliotheken zu einem ausführbaren Programm (siehe auch unter Modulgraph).

Anleitungen zur Benutzung von Compiler / Linker unter Unix:

Als weiteren Baustein enthält die C/C++ Toolchain neben dem Compiler und Linker, den sog. Präprozessor, der Quellcode auf textueller Ebene ersetzt oder verändert:

  • Includieren von Dateien (#include)
  • Präprozessor-Macros (#define)
  • Bedingte Compilierung (#if #ifdef)

Die Modularisierung bringt auch zusätzliche Optionen für die Variablendeklarationen mit sich


Konventionen | | Modulkonzept Beispiel

Options: