Gleicher Compiler. Gleiche Werkzeuge. Auf Windows, macOS und Linux.
Die C-Lehrumgebung ist ein Extension Pack für C-Lehrveranstaltungen der Hochschule Campus Wien. Sie ergänzt Visual Studio Code um die Erweiterungen, die zum Arbeiten in einer reproduzierbaren Entwicklungsumgebung benötigt werden.
Die eigentliche Toolchain läuft in einem Dev Container. Studierende verwenden dadurch unabhängig vom Host-Betriebssystem dieselben Versionen von Compiler, Debugger und Build-Werkzeugen.
Zusätzlich bietet die Extension einen leicht erreichbaren Schalter, mit dem generative Inline-Codevorschläge für konzentrierte Lern- und Prüfungssituationen ein- oder ausgeschaltet werden können.
Dieses Extension Pack installiert:
- Dev Containers – öffnet das Kursprojekt in einer vorbereiteten Container-Umgebung.
- C/C++ – stellt IntelliSense, Code-Navigation und Debugging für C bereit.
Die Erweiterungen bleiben unabhängig verwaltbar und können über die Extension-Ansicht von Visual Studio Code aktualisiert oder deaktiviert werden.
Nach der Installation zeigt die Statusleiste den aktuellen KI-Zustand an:
AI: ON
oder:
AI: OFF
Ein Klick auf den Eintrag schaltet generative Inline-Codevorschläge – etwa Vorschläge von GitHub Copilot – für das aktuelle VS-Code-Profil ein oder aus. Alternativ steht in der Befehlspalette der Befehl C-Lehrumgebung: Toggle AI Inline Suggestions zur Verfügung. Das Umschalten erfolgt sofort und ohne Neustart von VS Code.
Der Schalter verwendet die offizielle VS-Code-Einstellung:
"editor.inlineSuggest.enabled": falseAusgeschaltet werden die eingeblendeten Inline-Codevorschläge. Normales C-IntelliSense, Compilerdiagnosen, Funktionssignaturen und Code-Navigation bleiben ebenso verfügbar wie der KI-Chat. Weil der zentrale KI-Killswitch von VS Code nicht mehr verändert wird, erscheint beim Umschalten auch keine interne Meldung Canceled.
Beim Update von Version 0.2.0 bis 0.2.3 kann der frühere globale KI-Killswitch noch aktiv sein. Version 0.2.5 erkennt diesen Zustand. Beim nächsten bewussten Einschalten über AI: OFF setzt sie den alten Wert einmalig zurück. Dabei kann noch einmal kurz Canceled erscheinen; alle weiteren Umschaltvorgänge erfolgen ohne Neustart.
Die Einstellung gilt für das aktuelle VS-Code-Profil und verändert keine Dateien im geöffneten Git-Repository. Eine Workspace- oder Organisationsvorgabe kann den Profilwert übersteuern. Separat installierte KI-Erweiterungen anderer Anbieter können eigene Arten von Vorschlägen unabhängig verwalten.
Vor der ersten Verwendung werden benötigt:
- Visual Studio Code
- das von der Lehrveranstaltung bereitgestellte Kursprojekt
- Docker Desktop oder eine kompatible Container-Laufzeit
- unter Windows für die empfohlene Docker-Desktop-Konfiguration zusätzlich WSL 2
Wichtig: Dieses Extension Pack installiert keinen Compiler und keine Container-Laufzeit auf dem Host-System. GCC, GDB, Make und weitere Werkzeuge werden vom Dev Container des Kursprojekts bereitgestellt.
- Dieses Extension Pack installieren.
- Docker Desktop starten.
- Das bereitgestellte Kursprojekt in Visual Studio Code öffnen.
- Den Hinweis Reopen in Container bestätigen.
- Warten, bis der Container beim ersten Öffnen erstellt wurde.
- Das Projekt über die im Kursprojekt vorbereiteten Build- und Debug-Tasks ausführen.
Falls der Hinweis nicht erscheint:
- Die Befehlspalette mit
F1oderStrg/Cmd + Umschalt + Pöffnen. - Dev Containers: Reopen in Container ausführen.
Für Windows wird Docker Desktop mit dem WSL-2-Backend empfohlen. WSL 2 ist nicht bei jeder denkbaren Container-Konfiguration zwingend erforderlich, stellt aber den vorgesehenen und am einfachsten unterstützbaren Weg für diese Lehrumgebung dar. Vor dem Öffnen des Kursprojekts sollten diese Befehle in PowerShell funktionieren:
wsl --status
docker version
code --versionDas Projekt sollte möglichst nicht gleichzeitig mit nativen Windows-Werkzeugen und Container-Werkzeugen gebaut werden. So werden unterschiedliche Binärformate, Pfade und Zeilenenden vermieden.
Docker Desktop muss gestartet sein, bevor das Kursprojekt als Dev Container geöffnet wird. Die Architektur des Macs – Intel oder Apple Silicon – wird vom verwendeten Container-Image berücksichtigt.
Zur Kontrolle können im Terminal ausgeführt werden:
docker version
code --versionDocker Engine oder eine kompatible Container-Laufzeit muss installiert sein. Der angemeldete Benutzer benötigt die Berechtigung, Container ohne interaktive Root-Anmeldung zu starten.
WSL 2 steht für Windows Subsystem for Linux 2. Es ist eine Windows-Komponente, die einen Linux-Kernel in einer leichtgewichtigen virtuellen Maschine ausführt. Docker Desktop kann darauf Linux-Container betreiben, ohne dass Windows ersetzt oder ein Dual-Boot-System eingerichtet werden muss.
Für diese Lehrumgebung ergibt sich unter Windows folgender Aufbau:
Windows
└── WSL 2
└── Docker Desktop
└── C-Dev-Container
├── GCC
├── GDB
└── Make
VS Code läuft weiterhin als normale Windows-Anwendung. WSL 2 und Docker arbeiten größtenteils im Hintergrund.
Die vereinfachte Installation wird von Windows 11 und aktuellen Windows-10-Versionen unterstützt. Außerdem muss die Hardware-Virtualisierung im UEFI/BIOS aktiviert sein. Auf zentral verwalteten Hochschul- oder Firmenrechnern können dafür Administratorrechte oder Unterstützung durch die IT erforderlich sein.
-
PowerShell über einen Rechtsklick als Administrator starten.
-
Folgenden Befehl ausführen:
wsl --install -
Windows neu starten, wenn dazu aufgefordert wird.
-
Nach dem Neustart PowerShell öffnen und den Status kontrollieren:
wsl --status wsl --list --verbose
Neue Linux-Distributionen verwenden normalerweise WSL 2 als Standard. In der Ausgabe von wsl --list --verbose sollte in der Spalte VERSION der Wert 2 stehen. Die vollständige und aktuelle Vorgehensweise beschreibt die offizielle WSL-Installationsanleitung von Microsoft.
Ein vorhandenes WSL kann über PowerShell aktualisiert werden:
wsl --updateAnschließend kann ein Neustart von WSL oder Windows erforderlich sein.
Nach der WSL-Installation:
-
Docker Desktop installieren und starten.
-
In Settings → General die Option Use the WSL 2 based engine aktivieren, sofern sie nicht bereits aktiv ist.
-
In PowerShell prüfen, ob Docker erreichbar ist:
docker version
Weitere Details stehen in der Docker-Dokumentation zum WSL-2-Backend.
WSL 2 wird nur für den empfohlenen lokalen Windows-Weg benötigt. Mögliche Alternativen sind Docker Desktop mit einem anderen unterstützten Backend, ein entfernter Docker-Host oder eine browserbasierte Umgebung wie GitHub Codespaces. Welche Alternative in einer Lehrveranstaltung unterstützt wird, sollte vorab mit dem Lehrveranstaltungsteam geklärt werden.
Nach dem Öffnen des Dev Containers sollten im integrierten VS-Code-Terminal folgende Befehle funktionieren:
gcc --version
gdb --version
make --versionDie angezeigten Versionen werden durch das Kursprojekt festgelegt und sollten daher bei allen Studierenden übereinstimmen.
Zum Ausprobieren der vollständigen Umgebung steht ein öffentliches Starterprojekt bereit:
Es enthält einen schlanken, auf C zugeschnittenen Debian-Dev-Container mit GCC, GDB und Make, ein minimales C-Programm sowie fertige Build- und Debug-Tasks für Visual Studio Code. Das Repository kann geklont oder als ZIP heruntergeladen und anschließend direkt im Dev Container geöffnet werden.
Prüfen, ob diese Extension installiert und aktiviert ist. Anschließend die Befehlspalette öffnen und Dev Containers: Reopen in Container ausführen.
Prüfen, ob Docker Desktop beziehungsweise Docker Engine läuft:
docker versionWerden nur Client-Informationen oder eine Fehlermeldung angezeigt, ist die Container-Laufzeit noch nicht erreichbar.
In der Befehlspalette Dev Containers: Rebuild Container ausführen. Dabei wird die Entwicklungsumgebung anhand der Konfiguration des Kursprojekts neu erstellt.
Zuerst kontrollieren, ob links unten in Visual Studio Code angezeigt wird, dass das Projekt im Dev Container geöffnet ist. Die C/C++ Extension muss innerhalb des Containers aktiv sein.
Die reproduzierbare C-Umgebung wird nicht in diesem Extension Pack, sondern im jeweiligen Kurs-Repository beschrieben. Dazu gehören typischerweise:
.devcontainer/devcontainer.json
.vscode/tasks.json
.vscode/launch.json
Makefile
src/main.c
Dadurch werden Compilerflags, Debug-Konfiguration und Übungsdateien gemeinsam versioniert und können für jede Lehrveranstaltung gezielt angepasst werden.
Dieses Extension Pack enthält einen kleinen lokalen Programmteil für den Statusleisten-Schalter. Er liest und ändert ausschließlich die VS-Code-Einstellung editor.inlineSuggest.enabled, überträgt keine Daten und erhebt keine Telemetrie. Darüber hinaus veranlasst das Pack Visual Studio Code, die oben aufgeführten Erweiterungen zu installieren. Für diese Erweiterungen und für Visual Studio Code gelten die jeweiligen Bedingungen ihrer Anbieter.
Der Quellcode dieses Extension Packs ist öffentlich verfügbar:
Bei Problemen mit einer konkreten Lehrveranstaltung sollten sich Studierende zuerst an das jeweilige Lehrveranstaltungsteam wenden.
Konzeption, fachliche Verantwortung und Pflege:
Michael Strommer, Hochschule Campus Wien
Dieses Extension Pack und seine Dokumentation wurden mit Unterstützung von OpenAI Codex umgesetzt. Manifest, Paketinhalt und bereitgestellte Konfigurationen wurden vor der Veröffentlichung technisch und fachlich geprüft.
Der Quellcode dieses Extension Packs steht unter der MIT-Lizenz. Die gebündelten Erweiterungen werden unter ihren jeweils eigenen Lizenzen bereitgestellt.