C programmieren

Logo der Programmiersprache C: ein großes weißes C auf einem blauen achteckigen Hintergrund.

Einrichten der Programmiersprache C mit Compiler und Editor unter Linux, Mac und Windows

C ist eine universelle Programmiersprache, die 1972 entwickelt wurde, immer noch sehr populär ist und ständig weiterentwickelt wird. Die Programmiersprache ist grundlegend im Bereich der Informatik und Bestandteil eines jeden Informatik-Studiums.

C wird für die Entwicklung von Betriebssystemen, Datenbanken aber auch für Endanwender-Programme verwendet.

Wer C lernt erwirbt damit zugleich eine gute Grundlage für andere Programmiersprachen und erhält Einblicke in die Funktionsweise des Computers.

Exkurs: C, C++, C# klingt ähnlich, tatsächlich aber drei unterschiedliche Programmiersprachen.
C++ wurde im Jahr 2000 als eine Erweiterung von C entwickelt. Beide Sprachen haben fast die gleiche Syntax. Der Hauptunterschied zwischen C und C++ ist, dass C++ Klassen und Objekte unterstützt, während C dies nicht tut.
C# ist eine vollständig objektorientierte Sprache. Sie wurde von Microsoft entwickelt, um eine einfache und sichere Programmierung zu ermöglichen, und bietet erweiterte Funktionen wie Garbage Collection.

Voraussetzungen

Zum Erlernen von C brauchen Sie keine vorausgehenden Programmierkenntnisse. Um C Programme auf Ihrem Computer zu schreiben und auszuführen benötigen Sie lediglich

  • einen Editor
  • einen Compiler

Später ist noch ein Debugger hilfreich.

Für Ihre C-Programme und Dateien sollten Sie ein eigenes Verzeichnis erstellen, z.B. „c-learning“ oder „c-projects“.

Exkurs: Compiler und Debugger
Ein Programm erstellt man im einfachsten Fall aus einer Textdatei. Der Compiler übersetzt den Inhalt dieser Datei in ein ausführbares Programm. Ein Debugger ist ein Programm, das bei der Fehlersuche im Programmcode hilft.

Editor

Für den Anfang genügt ein einfacher Texteditor, wie ihn z.T. die Betriebssysteme mitbringen.

Linux: Texteditor, Visual Studio Code
Mac: CotEditor, Xcode (App-Store) Visual Studio Code
Windows: Editor, Visual Studio Code

Für Menschen mit Augenproblemen empfehlen wir jedoch das Programm Visual Studio Code (VSCode). Eine Anleitung für Installation und Einrichtung finden Sie im Bereich „Apps“:

VSCode steht für Linux, Mac und Windows zur Verfügung.

Auf dem Mac bringt Xcode alle Tools mit, die Sie für C benötigen.

Tips zur konkreten Konfiguration folgen weiter unten.

Hinweis: Oftmals werden auch die IDEs C::Make, NetBeans oder Eclipse empfohlen. Wir beschränken uns aber hier auf VSCode, der besseren Lesbarkeit wegen.

Einrichtung auf Linux Betriebssystemen

Am einfachsten ist der Start auf einem Linux- Betriebssystem wie Fedora, Ubuntu oder Linux-Mint. Hier ist ein Compiler (gcc = GNU Compiler Collection) bereits standardmäßig vorhanden. Sie können dies in einem Terminal prüfen mit der Eingabe von

gcc --version

Im TextEditor wählen Sie die Formatierung „C“ , erstellen eine neue Datei mit der Endung .c und speichern sie in dem zuvor angelegten Verzeichnis. Für das erste obligatorische „Hello-world“- Programm also die Datei hello.c .

In VSCode öffnen Sie zunächst Ihr Verzeichnis und erstellen dann eine Datei.

Drei Wege führen zu einer neuen Datei. entweder über das Datei Symbol rechts neben dem Verzeichnisnamen, mit der Tastenkombination Alt + Ctrl + N oder über das Menü „File“. VSCode schlägt dann automatisch empfohlene Erweiterungen für die verwendete Programmiersprache vor, soweit diese noch nicht vorhanden sind. Hier die Erweiterung „C/C++ Extension Pack“. Nach einem Klick auf „Install“ sind Sie startklar.

Nun füllen Sie die hello.c Datei mit Inhalt und speichern.

# include <stdio.h>

int main() {
    printf("hello world in c\n");
    return 0;
}

Bisher ist das nur Text, damit er zu einem ausführbaren Programm wird, muss ein Compiler ihn für den Computer übersetzen. Dies können Sie entweder selbst in einem Terminal-Fenster anstoßen oder automatisiert in VSCode starten.

Im Terminal

Öffnen Sie ein neues Terminal-Fenster am Speicherort Ihrer hello.c Datei. Dies geht am schnellsten über das Kontextmenü. Klicken Sie mit der rechten Maustaste auf das Verzeichnis, das die Datei enthält, also z.B. c-learning und wählen Sie „Open in Terminal“.

Im Terminal können Sie sich mit dem Befehl

ls

anzeigen lassen, welche Dateien sich im Verzeichnis befinden. Sie kompilieren die Datei mit dem Befehl:

gcc hello.c

Tip: Um nicht den Dateinamen in voller Länge eingeben zu müssen, nutzen Sie die automatische Textvervollständigung des Terminals. Dazu geben Sie die ersten Buchstaben des Dateinamens ein und betätigen die Tab-Taste (hier also „he“ und dann Tab-Taste drücken).

Ihr Verzeichnis beinhaltet nach dem kompilieren eine Datei a.out – das ist das neue hello-world Programm, das Sie auch schon starten können. Besser ist es, einen eigenen Namen für das Programm zu vergeben. Dazu wird das Flag -o, gefolgt vom Programmnamen angehängt.

gcc hello.c -o hello

Das Programm selbst starten Sie im Terminal ganz einfach durch Voranstellen eines Punktes und eine Schrägstriches vor dem Programmnamen:

./hello

In VSCode

VSCode übernimmt alle erforderlichen Schritte für Sie. Über die dreieckige Schaltfläche rechts am oberen Fensterrand starten Sie Compiler und Debugger.

Verwenden Sie dann die erste Option des Auswahl-Menüs:

Das Ergebnis sehen Sie im unteren Fensterbereich – Terminal.

Anders als beim Kompilieren im Terminal, müssen Sie hier keinen Namen für das Programm vergeben, es wird automatisch nach dem Namen der zugrunde liegenden .c Datei benannt.

Einrichtung auf dem Mac

Für den Mac gibt es das Programm Xcode, das Sie kostenfrei über den App-Store installieren können. Xcode ist eine sog. Entwicklungsumgebung (IDE), bei der Installation wird das Paket „Command Line Tools“ und damit auch der Compiler „clang“ gleich mitgeliefert. Zugegeben: beim ersten Öffnen des Programms wird man vom Funktionsumfang ein wenig erschlagen. Das gibt sich aber schnell, sobald Sie Ihr erstes Projekt erstellt haben. Und es hat den Vorteil, gut auf die Bedienungshilfen des Mac abgestimmt zu sein.
Wie Sie Xcode anpassen können, lesen Sie im Bereich „Apps“: Xcode einrichten

Alternativ können Sie die Apple Command Line Tools auch separat mit dem Paketmanager „Homebrew“ oder über das Terminal installieren. Dies benötigt nicht so viel Speicherplatz wie Xcode (5,56 GB).
Eine ausführliche Anleitung bietet die Webseite FreeCodeCamp

Ein C-Projekt in Xcode

In Xcode erstellen Sie zunächst ein neues Projekt über den Start-Assistenten, über das Menü „File > New > Projekt“ oder mit der Tastenkombination Cmd + Shift + N.

  • Plattform: macOS
  • Application: Command Line Tool
  • Projektname: c-learning (frei wählbar, bis auf einige Sonderzeichen)
  • Team: None
  • Organisation: com.example
  • Bundle-Identifier: wird automatisch ergänzt
  • Language: C


Xcode erstellt automatisch eine erste C-Datei mit dem Namen main.c:

Sie starten das Programm entweder über das Dreieck-Symbol am oberen Fensterrand, über das Menü „Product > Run“ oder per Tastenkombination Cmd + R. Über das Menü „Product > Build For“ oder nur über „Products > Build“ erstellen Sie eine Programmdatei. Die Ausgabe erscheint im unteren Fensterbereich

Das neue C-Program landet nicht im selben Ordner, wie oben gezeigt in VSCode, sondern in einem speziellen Build-Folder. Den finden Sie über das Menü „Product > Show Build Folder in Finder“.


Das eigentliche Programm „c-learning-mac“ können Sie von hier aus in einem separaten Terminal starten. Am einfachsten öffnen Sie ein Terminal-Fenster beim Ordner „Debug“ über das Kontextmenü: Klicken Sie mit der rechten Maustaste (oder bei gedrückter opttion-Taste) auf den Ordner und wählen Sie die Option „Dienste > Neues Terminal beim Ordner“.
Wie oben für Linux beschrieben, stellen Sie dem Programmnamen einen Punkt und einen Schrägstrich voran.

Mit CotEdit und Terminal

CotEdit ist ein einfacher Editor, den Sie aus dem Mac App-Store laden können. Er bringt Syntax-Highlighting für alle gängigen Programmiersprachen mit, die Schrift im Editor lässt sich gut anpassen und er ist für VoiceOver zugänglich.
Nach dem Öffnen des Editors befinden Sie sich in einer leeren Datei. Über das Auswahlmenü am oberen rechten Fensterrand wählen Sie die Programmiersprache. Den Namen für Ihre C-Datei vergeben Sie beim Speichern über das Menü „Ablage > Sichern“.

Anschließend öffnen Sie das Verzeichnis mit der C-Datei in einem Terminal, wie oben beschrieben.
Sie rufen den Compiler auf mit dem Befehl clang , gefolgt vom Dateinamen, dem Flag -o und dem (frei wählbaren) Namen für Ihr neues Programm:

clang hello-mac-2.c -o hello-mac-2

Das Programm können Sie anschließend in einem Terminal ausführen durch Voranstellen von ./ vor den Programmnamen. Auch im Mac- Terminal zeigt der Befehl ls die Dateien im geöffneten Verzeichnis an.

Einrichtung unter Windows

Windows selbst hat keinen eigenen C-Compiler.
Es gibt zwei unterschiedliche Wege, C-Programme unter Windows zu erstellen und auszuführen:

  • im Windows Subsystem für Linux (WSL)
  • Cygwin, eine Emulations- Schicht zwischen Linux-Compiler und Windows
  • MinGW: mit einem „umgebauten“ Linux-Compiler gcc

WSL

Mit dem WSL stellt Windows ein virtuelles Linux-Betriebssystem innerhalb von Windows zur Verfügung. Einmal eingerichtet, können damit alle Linux-Anwendungen genutzt werden, also auch der gcc-Compiler. Sie erstellen hier aber native Linux Anwendungen, die nicht unter Windows laufen, sondern nur im WSL oder auf einem Linux-Rechner.

MinGW-w64

MinGW MinGW-w64 enthält den für Windows „umgebauten“ Linux-Compiler gcc. MinGW enthält nur einen eingeschränkten Funktionsumfang, der für umfangreichere C-Programme nicht ausreicht. Download von SourceForge. Die Homepage des Herstellers verweist u.a. auf die Projekte Cygwin und MSYS2.

Cygwin

Cygwin stellt eine Kompatibilitätsschicht bereit, mit der Linux-Programme unter Windows ausgeführt werden können. Hauptbestandteil ist eine DLL-Datei (DLL: Dynamic Link Library), in der sich für Windows übersetzte Linux-Befehle (sog. Systemaufrufe) befinden.

Die Installation erfolgt mittels Setup-Programm von der Herstellerseite Cygwin. Während der Installation können Sie

  • den Installationsort so belassen wie vorgeschlagen
  • einen mirror wählen, z.B. „kernel.org“ oder einen Server in Ihrer Nähe
  • die Anwendungen wählen, die mitinstalliert werden sollen: make, gcc-core, gcc-g++, gdb
  • für alle die jeweils aktuelle Version wählen

Nach der Installation muss noch die Umgebungsvariable (Environment Variable) für gcc gesetzt werden. Die Vorgehensweise entspricht der weiter unten erklärten für MSYS2.

MSYS2

MSYS2 ist eine Softwaredistribution und Erstellungsplattform, die es erlaubt, Software aus der Unix (Linux)-Welt auf Windows zu portieren. Es unterstützt, zusammen mit der Compiler-Portierung Mingw-w64, die Übersetzung von Unix-Quelltext in native Windows-Programme. MSYS2 birngt einen eigenen Paket-Manager mit, der es ermöglicht, nicht nur den Compiler gcc, sondern noch zahlreiche weitere Linux-Programme unter Windows zu benutzen.

Die Setup-Datei erhalten Sie über die Herstellerseite MSYS2. Sie starten die Installation per Doppelklick, ein Assistent leitet Sie durch die weiteren Schritte.

Die vorgeschlagenen Einstellungen können Sie so beibehalten. In das Verzeichnis, das zu Anfang vorgegeben wird, werden auch später alle weiteren Anwendungen installiert.

Anschließend öffnet sich ein Terminal-Fenster.

Über das Startmenü > Alle Apps finden Sie den Ordner mit den installierten Komponenten. Jeder Eintrag öffnet eine Terminal-Umgebung. Nach der Installation ist das letzte aus der Reihe unten geöffnet.

Um das MSYS2 zu aktualisieren verwenden Sie im bereits geöffneten Terminal-Fenster (MSYS-UCRT64) den nachstehenden Befehl und bestätigen mit y.

pacman -Suy

Exkurs:

pacman Grafig mit Arch-Linux Logo

Pacman ist ein Paket-Manager und stammt von der Linux Distribution Arch-Linux. Pacman ist vergleichbar mit dnfunter Fedora, aptunter Ubuntu oder yum unter OpenSuse.

Ein Paket-Manager ist ein Programm, mit dem man Anwendungsprogramme (genauer Programm-Pakete) auf dem Computer verwaltet, installiert, aktualisiert oder entfernt. Der zugehörige Befehl lautet dementsprechend ebenfalls pacman , gefolgt von verschiedenen Optionen (flags).
So führt z.B. der Befehl (im Terminal) pacman -S eine Installation durch, mit pacman -R werden Programmpakete entfernt.

  • s : bewirkt eine Suche.
  • Ss: damit wird ein Paketname in der Paketdatenbank gesucht,
  • y : bewirkt eine Aktualisierung der Paketdatenbank (falls es tatsächlich Änderungen gibt)

Weitere Informationen über die Befehle und Flags finden Sie auf der Webseite Arch-Linux-Wiki – Pacman .

Im Anschluss müssen Sie nun noch den Compiler gcc oder besser die Basis- Entwicklerwerkzeuge installieren. Eine Übersicht über die zur Verfügung stehenden Compiler-Pakete finden Sie auf der Herstellerseite im Bereich „Package index“ mit dem Suchbegriff „gcc“

Sie installieren den gcc-Compiler im Terminal „MSYS2-MINGW64“ mit dem Befehl:

pacman -S mingw-w64-ucrt-x86_64-gcc

Oder (empfohlen) die Basis Entwicklerwerkzeuge insgesamt, im Terminal „MSYS2-UCRT64“:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

Die neu installierten Tools befinden sich im Verzeichnis
C:\msys64\ucrt64\bin. Das Verzeichnis entspricht jeweils der gewählten Terminal-Komponente des Startmenüs: also bei der Installation von gcc über „MSYS2-MINGW64“ finden Sie den Compiler im Verzeichnis C:\msys64\mingw64\bin .

Damit der Compiler systemweit gefunden werden kann, muss die Umgebungsvariable PATH für das bin-Verzeichnis, das den Compiler enthält, hinzugefügt werden.

Umgebungsvariable setzen

  1. Kopieren Sie den Pfad zum bin-Verzeichnis. Am einfachsten geht dies über das Kontextmenü: klicken Sie in der oberen Fensterleiste mit der rechten Maustaste hinter die Pfadangabe und wählen Sie „Adresse kopieren“

  1. Öffnen Sie die Systemsteuerung, tippen Sie „env“ in das Suchfeld.

Im sich öffenenden Dialogfeld „Systemsteuerung > Erweitert“ wählen Sie die Schaltfläche „Umgebungsvariablen“.

  1. Im Bereich „Benutzervariablen“ wählen Sie PATH und fügen über die Schaltfläche „Bearbeiten“ die zuvor kopierte Adresse ein.

Alle Dialoge mit OK bestätigen.

Die erfolgreiche Installation testen Sie mit

gcc --version
g++ --version
gdb --version

und erhalten die Ausgabe der jeweils aktuellen Versionen.

Sie können dazu das reguläre Windows Terminal benutzen.

Editor oder IDE

Wie bereits oben dargestellt, ist Visual Studio Code eine gute Wahl. Der Editor „Editor“, der bei Windows schon im Standard enthalten ist, eignet sich nicht wirklich zum Schreiben von Programmcode.
Nach dem Download des Installers von der Herstellerseite Visual Studio Code und Installation wie gewohnt per Doppelklick, entspricht die Einrichtung der oben für Linux beschriebenen.

Sie benötigen die Erweiterung „C/C++ Extension Pack“ (s.o.) und können dann eine erste C Datei erstellen und kompilieren.

Ausblick

Zum Lernen ist es egal, auf welchem Betriebssystem Sie arbeiten. Am unkompliziertesten sind die gängigen Linux-Distributionen, gefolgt vom Mac. Unter Windows ist der Aufwand für die Einrichtung etwas höher. Alternativen sind die Verwendung einer Virtuellen Maschine (Virtual Box) mit einem Linux Betriebssystem oder der Einsatz eines Docker Containers.

Für den Produktiv-Einsatz sollten Sie immer auf dem Betriebssystem programmieren, auf dem auch das Programm später laufen soll.


Online lernen

  • Für den Einstieg gut geeignet und eine unbedingte Empfehlung: w3schools
  • C Programmierkurs in Textform: TU Chemnitz
  • Schon etwas älter, aber immer noch aktuell, anspruchsvoll aber sehr gut erklärt: Vorlesungsvideos der Uni Insbruck, Justus Piater (WS 2014/2015) auf YouTube
  • Anspruchsvoll: Vorlesungsvideos der Uni Freiburg, vorbildlich mit begleitenden Unterlagen: Uni Freiburg – Informatik 2021

Lengendäres Buch, unbedingt lesen!

GitHub