Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C-Lehrumgebung

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.

Enthaltene Erweiterungen

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.

KI-Codevorschläge ein- und ausschalten

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": false

Ausgeschaltet 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.

Voraussetzungen

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.

Schnellstart

  1. Dieses Extension Pack installieren.
  2. Docker Desktop starten.
  3. Das bereitgestellte Kursprojekt in Visual Studio Code öffnen.
  4. Den Hinweis Reopen in Container bestätigen.
  5. Warten, bis der Container beim ersten Öffnen erstellt wurde.
  6. Das Projekt über die im Kursprojekt vorbereiteten Build- und Debug-Tasks ausführen.

Falls der Hinweis nicht erscheint:

  1. Die Befehlspalette mit F1 oder Strg/Cmd + Umschalt + P öffnen.
  2. Dev Containers: Reopen in Container ausführen.

Hinweise nach Betriebssystem

Windows

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 --version

Das Projekt sollte möglichst nicht gleichzeitig mit nativen Windows-Werkzeugen und Container-Werkzeugen gebaut werden. So werden unterschiedliche Binärformate, Pfade und Zeilenenden vermieden.

macOS

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 --version

Linux

Docker 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 unter Windows

Was ist WSL 2?

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.

Voraussetzungen

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.

WSL 2 installieren

  1. PowerShell über einen Rechtsklick als Administrator starten.

  2. Folgenden Befehl ausführen:

    wsl --install
  3. Windows neu starten, wenn dazu aufgefordert wird.

  4. 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.

WSL aktualisieren

Ein vorhandenes WSL kann über PowerShell aktualisiert werden:

wsl --update

Anschließend kann ein Neustart von WSL oder Windows erforderlich sein.

Docker Desktop konfigurieren

Nach der WSL-Installation:

  1. Docker Desktop installieren und starten.

  2. In Settings → General die Option Use the WSL 2 based engine aktivieren, sofern sie nicht bereits aktiv ist.

  3. In PowerShell prüfen, ob Docker erreichbar ist:

    docker version

Weitere Details stehen in der Docker-Dokumentation zum WSL-2-Backend.

Wenn WSL 2 nicht verwendet werden kann

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.

Umgebung überprüfen

Nach dem Öffnen des Dev Containers sollten im integrierten VS-Code-Terminal folgende Befehle funktionieren:

gcc --version
gdb --version
make --version

Die angezeigten Versionen werden durch das Kursprojekt festgelegt und sollten daher bei allen Studierenden übereinstimmen.

Hello-World-Starterprojekt

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.

Häufige Probleme

„Reopen in Container“ wird nicht angezeigt

Prüfen, ob diese Extension installiert und aktiviert ist. Anschließend die Befehlspalette öffnen und Dev Containers: Reopen in Container ausführen.

Verbindung zu Docker schlägt fehl

Prüfen, ob Docker Desktop beziehungsweise Docker Engine läuft:

docker version

Werden nur Client-Informationen oder eine Fehlermeldung angezeigt, ist die Container-Laufzeit noch nicht erreichbar.

Der Container wurde nach einer Änderung nicht aktualisiert

In der Befehlspalette Dev Containers: Rebuild Container ausführen. Dabei wird die Entwicklungsumgebung anhand der Konfiguration des Kursprojekts neu erstellt.

IntelliSense findet Standard-Header nicht

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.

Was gehört ins Kursprojekt?

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.

Datenschutz und Telemetrie

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.

Quellcode und Support

Der Quellcode dieses Extension Packs ist öffentlich verfügbar:

Bei Problemen mit einer konkreten Lehrveranstaltung sollten sich Studierende zuerst an das jeweilige Lehrveranstaltungsteam wenden.

Verantwortlichkeit und Erstellung

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.

Lizenz

Der Quellcode dieses Extension Packs steht unter der MIT-Lizenz. Die gebündelten Erweiterungen werden unter ihren jeweils eigenen Lizenzen bereitgestellt.

About

VS-Code Extension Pack für eine einheitliche C-Lehrumgebung mit Dev Containers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages