Programmieren in C zeichnet sich besonders durch die hohe Flexibilität der Programmiersprache aus. Möglich machen dies der Präprozessor zum Vorverarbeiten des Codes und eine an individuelle Bedürfnisse anpassbare Standardbibliothek.
C umfasst eine nkleinen Sprachkern mit einer Standardbibliothek, die Nutzer beim Programmieren in C an ihren eigenen Bedarf anpassen können.
Wie wird C-Code nun verarbeitet? Zu Beginn der Ausführungen zu den syntaktischen Elementen in der C-Programmierung (speziell im Bereich Definitionen und Deklarationen) war bereits einmal vom C-Präprozessor die Rede. Diesem obliegt die Vorverarbeitung des C-Quelltexts zur sogenannten Übersetzungseinheit (translation unit), die dann dem eigentlichen Compiler zur Weiterverarbeitung übergeben wird. Er arbeitet als zeilenorientierte Textersetzungsmaschine und versteht die C-Syntax nicht.
Seine Aufgabe ist es, jede Zeile mit einem newline character abzuschließen, unabhängig von der äußeren Form einer Textzeile, durch ihre Entsprechungen zu ersetzen, Zeilen, die mit einem Rückschrägstrich enden, zusammenzufügen, Zeichengruppen zu ersetzen (z.B. Escape-Sequenzen, Makros), Leerraum zu kondensieren, Kommentare (/* ... */) zu entfernen und durch ein Leerzeichen zu ersetzen, Direktiven auszuführen (auch wiederholt und rekursiv), und Dateien einzufügen (mit denen er dann rekursiv das gleiche anstellt).
Präprozessordirektiven werden mit # eingeleitet. Sie beginnen traditionell am linken Rand und stehen auf einer logischen Zeile. Es gibt folgende Direktiven:
include <datei.h> : Standard-Header hier einfügen
#include „datei.h“ : eigenen Header hier einfügen
#define DIES jenes 17 überall : >DIES< durch >jenes 17< ersetzen, sogenanntes Makro
#undef XXX : Makrodefinition XXX entfernen
#line 47 : nächste Zeilennummer in der Datei
#error „some failure!“ : zur Compilierzeit Fehlermeldung erzeugen
defined : optional zur Verwendung mit #if und #elif
Präprozessor-Makronamen, wie oben z.B. DIES, XXX und FEATURE, werden traditionsgemäß meist komplett in Großbuchstaben geschrieben, führende Unterstriche sind für das System reserviert und sollten nicht verwendet werden.
Der Präprozessor ist eine reine Textersetzungsmaschine, ohne jegliche Kenntnis von C! Semantische Klarheit von Quellcode hat heutzutage jedoch höchste Priorität. Daher ist der moderne Trend in der Anwendungsentwicklung (ca. seit Beginn der 90er Jahre), den Präprozessor nur noch für einfache Makros sowie Inklusion und – falls notwendig – bedingte Compilierung einzusetzen. In der Systemsoftware sieht es allerdings etwas anders aus, wie man leicht beim Studium der Headerdateien feststellen kann. Man traut den Systemprogrammierern offenbar mehr Durchblick und Disziplin zu!
Die C-Standardbibliothek
Während es bei früheren Programmiersprachen allgemein üblich war, die Bedienung der Peripherie, Ein- und Ausgabebefehle, Formatieranweisungen für den Druck, spezielle, für den prospektiven Anwendungsbereich erforderliche mathematische oder textverarbeitende Funktionen und ähnliches alles in der Sprache selbst unterzubringen, wurde C von Anfang an ausgelegt, einen möglichst kleinen Sprachkern in Verbindung mit einer Standardbibliothek zu verwenden. Die Sprache sollte es dem Benutzer auf einfache Weise ermöglichen, diese Bibliothek seinem Bedarf anzupassen und auf Wunsch beliebig zu erweitern. Diese Entwurfsphilosophie ist eines der Hauptkennzeichen von C geblieben.
Zur Sprache C gehört eine Standardbibliothek (standard C library), deren Programmierschnittstelle (application programmer interface, API) über die weiter unten aufgelisteten, insgesamt 18 sog. Header-Dateien definiert wird. Sie enthalten die Definitionen für Makros und Datentypen, sowie die Deklarationen von Namen und Funktionen in den entsprechenden Abschnitten der Bibliothek.45383363
Die 18 Header-Dateien der C-Standardbibliothek sind:
Die Anbindung entsprechender Abschnitte der Standardbibliothek sollte im Quelltext immer über die Einbindung der jeweils zutreffenden Header mittels der zuvor erwähnten #include <...> Präprozessoranweisungen geschehen, um die notwendigen Definitionen alle korrekt zu übernehmen.
Die Einbindung der jeweiligen Teile der Objektbibliothek durch den Linker geschieht meist automatisch, zuweilen ist es jedoch notwendig, bestimmte Teile – oft die zu math.h gehörenden Funktionen – mittels spezieller Linkeroptionen bei der Compilierung explizit anzufordern.
In den vergangene vier Beiträgen haben wir uns ein grundlegendes Wissen über die lexikalischen Elemente in C sowie dem syntaktischen Aufbau der Programmiersprache verfasst. Geschriebener Code muss allerdings auch verarbeitet werden, damit ein System das Programm auch erkennt und verarbeiten kann. Im nächsten Beitrag beleuchten wir daher näher, wie der C-Compiler aufgebaut ist und wie dessen Arbeitsabläufe aussehen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.