# QuickC

Microsoft QuickC ist ein Compiler und eine zeichenorientierte Entwicklungsumgebung für die Programmiersprache C unter MS-DOS. Später folgte auch eine Version mit grafischer Benutzeroberfläche für das Betriebssystem Windows. Es ist in allen Versionen möglich, zwischen reinem ANSI C und den Spracherweiterungen von Microsoft zu wählen. Keine Version unterstützt objektorientierte Programmierung.

## Geschichte

QuickC 1.00 (Oktober 1987)
Die erste Version setzt die damalige Version des ANSI-C-Standards um und ist grundsätzlich kompatibel mit Microsoft C 5.0. Allerdings wird das Huge-Speichermodell nicht unterstützt.
Der Debugger CodeView unterstützt QuickC, ist aber nicht im Lieferumfang enthalten. Der integrierte Source-Level-Debugger von QuickC basiert jedoch auf CodeView.
Die Benutzeroberfläche ist als Single Document Interface (SDI) gestaltet. Es können also nicht mehrere Quelltextdateien gleichzeitig geöffnet sein bzw. bearbeitet werden.
Die Version hatte Kompatibilitätsprobleme mit diversen Festplattencontrollern von Western Digital, da beide Technologien denselben Interruptvektor für unterschiedliche Zwecke nutzten.
QuickC 1.01 (März 1988)
Die Version behebt diverse Grafikfehler und die zuvor genannten Kompatibilitätsprobleme mit den Festplattencontrollern von Western Digital.
QuickC 2.00 (Januar 1989)
Für die zweite Version von QuickC wurde die zeichenorientierte Benutzeroberfläche (TUI) der Entwicklungsumgebung komplett neu erstellt. Sie ähnelt jetzt der TUI von QuickBASIC 4.5 oder dem später erschienen Microsoft C 6.0 (Programmer’s WorkBench; PWB). Wie bei diesen wird nun auch eine kontextsensitive Hilfe angeboten. Befindet sich der Cursor innerhalb eines Schlüsselwortes oder eines Bezeichners einer bekannten Funktion, Konstanten oder Compiler-Anweisung, kann man durch Drücken der F1-Taste oder einem Rechtsklick die Dokumentation für das jeweilige Sprachelement anzeigen lassen.
Ab dieser Version besaß QuickC einen inkrementellen Compiler. Bei Änderungen in einzelnen Dateien muss also nicht das komplette Projekt neu kompiliert werden, sondern nur die Teile, welche von den Änderungen direkt betroffen sind. Allerdings ist es nicht möglich, CodeView zusammen mit dieser Einstellung zu verwenden.
Ähnlich wie bei BGI für Turbo C/C++ werden neben Zeichenfunktionen für grafische Primitiven auch zusätzliche Funktionen zur Visualisierung von statistischen Daten bereitgestellt. Dazu zählen Streu-, Linien-, Balken- und Kreisdiagramme.
Wie bei Microsoft C werden ab der zweiten Version Inline-Assemblerfragmente unterstützt. Zudem werden alle Speichermodelle im Real Mode von x86-Prozessoren unterstützt. Bei den beiden Versionen zuvor war das Tiny-Modell nicht verfügbar. Dieses ist u. a. notwendig zur Erstellung von COM-Dateien.
Die erstellten Programme sind kompatibel mit Microsoft C 5.1. Die Make-Dateien für den Erstellungsprozess sind aufgrund der Umstellung von MAKE auf NMAKE jedoch nicht auf Anhieb kompatibel mit denen von früheren Versionen.
QuickC 2.01 (Juni 1989)
Identisch mit Version 2.00. Bei dieser Version wurde QuickC lediglich zusammen mit QuickAssembler vertrieben.
QuickC 2.50 (Mai 1990)
Programme sind kompatibel mit Microsoft C 6.0. Variablen vom Typ long double werden nun in der für den 80x87 Co-Prozessor typischen Form von 10-Byte (80-Bit) gespeichert, vorher war das noch in 64-Bit.
QuickC 2.51 (Dezember 1990)
Identisch mit Version 2.50. Bei dieser Version wurde QuickC lediglich zusammen mit QuickAssembler vertrieben.

## QuickC for Windows

Im September 1991 veröffentlichte Microsoft eine integrierte Entwicklungsumgebung für QuickC mit einer grafischen Benutzeroberfläche (GUI), die für Windows 3.x (16-Bit) ausgelegt war. Die Standard-Edition von Visual C++ 1.0 basiert weitestgehend auf QuickC for Windows.

### Funktionen

Die Entwicklungsumgebung von QuickC for Windows besitzt folgende Eigenschaften bzw. bietet folgende Funktionen an:
* Das Hauptprogramm besitzt eine MDI-Oberfläche. Es können also mehrere Dokumente gleichzeitig bearbeitet werden.
* Der Quelltext-Editor unterstützt Syntaxhervorhebung.
* Es wird ein integrierter Source-Level-Debugger angeboten, der jedoch nur rudimentäre Funktionen, wie beispielsweise Haltepunkte und das Überwachen einzelner Variablen, unterstützt. Maschinencode kann nicht angezeigt werden und es ist auch nicht möglich, Fragmente, die in einer anderen Programmiersprache erstellt wurden, zu analysieren.
* Code aus Microsoft C 6.0 ist grundsätzlich lauffähig unter QuickC for Windows. Allerdings werden nur die Speichermodelle Small, Compact, Medium und Large durch die Entwicklungsumgebung angeboten. Das Tiny-Modell wird nicht über die Oberfläche bereitgestellt.
* Anwendungen, die für Windows ausgelegt sind, können Dynamic Data Exchange (DDE) nutzen.
* Microsoft QuickC for Windows 1.0 ist etwa 52 % langsamer als Borland Turbo C++ for Windows 3.1.

### Projekttypen

Es werden vier Projekttypen unterstützt. Die erstellten Programme sind grundsätzlich für den Protected Mode ausgelegt. Es können aber auch DOS-Programme im Real Mode erzeugt werden.
Windows EXE
Eine 16-Bit-Anwendung für Windows. Je nachdem, ob ein Hauptfenster erzeugt wird oder nicht, kann es sich dabei entweder um eine Konsolenanwendung oder um ein Programm mit grafischer Benutzeroberfläche handeln.
QuickWin EXE
Ein automatisch generiertes Grundgerüst für eine 16-Bit-Windows-Anwendung mit grafischer Benutzeroberfläche. Auf dieser befindet sich ein mehrzeiliges Ein- und Ausgabefeld, das die Standard-Datenströme abbildet. Der Projekttyp ist für Testanwendungen geeignet, aber auch, um alte Programme aus Microsoft C 6.0 und früher unter Windows lauffähig zu machen und mit einer rudimentären grafischen Benutzeroberfläche auszustatten. Klassische Programme für MS-DOS erforderten unter Windows 3.x noch einen Wechsel in den DOS-Modus, was mit diesem Projekttyp umgangen werden konnte.
Windows DLL
Eine 16-Bit-Dynamic Link Library (DLL) für Windows.
DOS EXE
Eine Konsolenanwendung für MS-DOS.

### Optionale Werkzeuge

Ähnlich, wie bei allen späteren Entwicklungsumgebungen für C/C++ von Microsoft, werden Editoren für Ressourcen bereitgestellt. Diese liegen als eigenständige Applikationen vor, können aber auch aus der IDE heraus gestartet werden.
Microsoft Dialog Editor
Ein WYSIWYG-Editor zur Gestaltung von Dialogfenstern, die in einer Ressourcendatei abgelegt werden können. Neben den Standard-Steuerelementen von Windows (Textfelder, Schaltflächen, Kontrollkästchen etc.), können auch benutzerdefinierte Steuerelemente eingefügt werden. Diese müssen selbst gezeichnet und die Ereignisbehandlung und die Geschäftslogik generell selbst implementiert werden. Vererbung von bestehenden Steuerelementen funktioniert nicht, da dieses Konzept nicht durch die Programmiersprache umgesetzt werden kann.
Microsoft Image Editor
Ein Editor für Rastergrafiken (Bitmaps, Mauszeiger und Icons), die ebenfalls in einer Ressourcendatei abgelegt werden können. Der Editor ähnelt der damaligen Version von Microsoft Paintbrush.
Caseworks QuickCase:W
Das CASE-Werkzeug QuickCase:W ermöglicht die Generierung von Quelltext für die grafische Benutzeroberfläche. Es handelt sich dabei um eine abgespeckte Version der Software Case:W der Firma Caseworks Inc.

### Beispiel

Das folgende Hallo-Welt-Programm zeigt eine Messagebox mit dem Text „Hallo Welt!“ an. Unter QuickC for Windows ist es zwingend erforderlich, dass die Hauptfunktion die Pascal-Aufrufkonvention nutzt.