Watcom C/C++

IDE und Compiler für die Programmiersprachen C und C++ From Wikipedia, the free encyclopedia

Watcom C/C++ ist ein Compiler und eine Entwicklungsumgebung für die Programmiersprachen C und C++.

Schnelle Fakten Watcom C/C++ Open Watcom C/C++, Basisdaten ...
Watcom C/C++
Open Watcom C/C++

Hallo-Welt-Programm in der IDE von Open Watcom C/C++.
Basisdaten
Entwickler Watcom International Corporation, Sybase
Erscheinungsjahr 1988
Aktuelle Version 11.0c[1][2]
(21. Dezember 2002)
1.9 (Open Watcom)[1]
(2. Juni 2010)
Aktuelle Vorabversion 2.0 (Open Watcom)[3]
(4. September 2025)
Betriebssystem Linux, DOS, OS/2, Microsoft Windows[4]
Programmier­sprache C
Kategorie Compiler, IDE
Lizenz Sybase Open Source Licence[5]
deutschsprachig nein
openwatcom.org
Schließen

Der Compiler ermöglicht die Entwicklung von Anwendungen für die Zielplattformen Linux, DOS, NetWare, OS/2, Windows 1.0, Windows 2.x, Windows 3.x (incl. Win32s), Windows 9x und Windows NT.[4]

Es werden die Befehlssatzarchitekturen x86 (16- und 32-Bit) unterstützt. Die Vorabversion von Open Watcom C/C++ 2.0 unterstützt zusätzlich den x64-Befehlssatz (64-Bit).[6]

Bei den Compilern von Watcom C/C++ handelt es sich um Cross-Compiler. Diese können also Programme für andere Betriebssysteme erzeugen.[7][8] Aus der 32-Bit-Entwicklungsumgebung für Windows NT können also beispielsweise 16-Bit-Programme erzeugt werden, die im Real Mode unter MS-DOS laufen.[4]

Geschichte

Die nachfolgende Tabelle enthält eine Auswahl der wichtigsten Änderungen der einzelnen Versionen:[1][9]

Weitere Informationen Version, Datum ...
Version Datum Beschreibung
Waterloo C for S/370 1984
Watcom C 6.0 1988
  • Ausschließliche Unterstützung von DOS als Host- und Zielplattform
  • Beinhaltete einen Debugger und eine Reihe von Laufzeitbibliotheken
  • Vollständige Kompatibilität mit dem damaligen Entwurf von ANSI C[10]
Watcom C 7.0 1989
  • Erste 32-Bit-Version, weiterhin ausschließlich DOS als Host- und Zielplattform
  • Unterstützung des DOS-Extenders Phar Lap
  • Vertrieb ohne Linker und Debugger
Watcom C 7.0/386
Watcom C 8.0 1990
Watcom C 8.0/386
Watcom C 8.5 1991
Watcom C 8.5/386
Watcom C 9.0 1992
  • Unterstützung von OS/2 2.0 als Host- und Zielplattform
  • Optimierung für Intel-486-Prozessoren
  • Unterstützung von Based Pointers mit Hilfe der Schlüsselwörter __based, __segment, __segname und __self[13]
Watcom C 9.0/386
Watcom C 9.01/386
Watcom C 9.5 1993
  • Compiler für C++ hinzugefügt
  • Optimierungen für Prozessoren der Intel-Pentium-Reihe
  • Unterstützung von Windows NT als Host- und Zielplattform
Watcom C 9.5/386
Watcom C/C++ 10.0 1994
Watcom C/C++ 10.5 1995
  • Unterstützung von Windows 95 und NT 3.5
  • Native Ausnahmebehandlung für C++ unter OS/2 und Win32
  • Unterstützung von TCP/IP-Remote-Debugging
Watcom C/C++ 10.6 1996
  • Strukturierte Ausnahmebehandlung unter C
  • Verbesserte Kompatibilität mit Microsoft-Compilern
Watcom C/C++ 11.0 1997
Watcom C/C++ 11.0b 1998
  • Das SOM-Toolkit für OS/2 wird nicht länger unterstützt und wurde deshalb entfernt.[15]
  • Fehlerbehebung
Watcom C/C++ 11.0c 21. Dezember 2002
  • Erste Version die als Open-Source-Projekt bereitgestellt wurde.[16]
Open Watcom 1.0 28. Januar 2003
  • Der Linker verhält sich bei der Symbol-Auflösung standardmäßig case-sensitive
  • Komponenten des Win32-SDKs und des OS/2-Toolkits werden nicht mehr mitgeliefert
  • Das MFC-Framework und die dazugehörige Dokumentation sind nicht mehr enthalten
Open Watcom 1.1 12. August 2003
  • Fehlerbehebung
Open Watcom 1.2 7. Januar 2004
  • Verbesserte Unterstützung von C99 (u. a. Unterstützung von long long, __func__ und __VA_ARGS__)
  • Die grafische Benutzeroberfläche unterstützt Visual Styles von Windows XP
  • Die Zielplattformen AutoCAD und MFC wurden aus der IDE entfernt
  • Die C-Laufzeitbibliothek wurde optimiert, um kleinere Anwendungen zu erzeugen
  • Überarbeitung der hauseigenen Ressourcen-Editoren (u. a. Drag and Drop für den Bildeditor)
  • Verbesserte Kompatibilität mit MASM 6.x
Open Watcom 1.3 3. August 2004
  • Unterstützung von Standardargumenten in Templates (default template arguments)
  • Sichtbarkeit von Variablen (scope) konform mit ISO/IEC 14882 (ISO C++)
  • Unterstützung von SSE, SSE2, SSE3 und 3DNow
  • Unterstützung der Direktiven .MMX, .K3D, .XMM, .XMM2 and .XMM3 für den Inline-Assembler (in _asm und #pragma aux)
  • Alternative Schlüsselwörter für logische Operatoren (and statt &&, xor statt ^ etc.) und das C99-konforme inline statt _inline resp. __inline
  • Neue C99-konforme Funktionen atoll(), lltoa(), ulltoa(), strtoll() und strtoull() in der C-Laufzeitbibliothek
  • Eliminierung von leeren Segmenten bei 16-Bit-Anwendungen im NE-Format für OS/2 und Windows
  • Die Standard-Datenströme stdaux und stdprn (Drucker) sind nur noch für die Zielplattform DOS definiert
  • Optional verfügbare DirectX-Beispiele
Open Watcom 1.4 14. Dezember 2005
  • Unterstützung von C99-konformen Designated Initializers. Diese erlauben es, Mitglieder einer Klasse direkt mithilfe ihres Namens zu initialisieren, wie beispielsweise:
    struct {int a, b;} c = {.a=0, .b=1};.
    Das gilt analog auch für Arrays, wie beispielsweise:
    int a[4] = {[0]=5, [3]=2};.[17]
  • Neues Schlüsselwort __watcall um die standardmäßige Aufrufkonvention von Watcom.
  • Für C wurden einige Makros in Schlüsselworte umgewandelt: _Cdecl, _Export, _Far16, _Fastcall, _Pascal, __sycall, _System, __try, __except, __finally und __leave
  • Für C++ wurden folgende Makros in Schlüsselworte umgewandelt: _Cdecl, _Export, _Far16, _Fastcall, __inline, _Pascal, __syscall und _System
  • Neue C99-kompatible Funktionen wmemchr(), wmemcmp(), wmemcpy(), wmemmove() und wmemset()
  • Syntaxhervorhebung für Makefiles
Open Watcom 1.5 26. April 2006
  • Unterstützung von ISO/IEC TR 24731 („Extensions to the C Library, Part I: Bounds-checking interfaces“) in der C-Laufzeitbibliothek
  • Neues Schlüsselwort __restrict, das gleichwertig ist mit dem Schlüsselwort restrict aus dem C99-Standard, aber unabhängig vom C99-Modus immer verfügbar und sichtbar ist.
  • Im C99-Modus muss die main() Funktion nicht explizit einen Wert zurückliefern. Fehlt die return Anweisung am Ende der Funktion, wird automatisch der Wert 0 zurückgegeben.
  • Der POSIX-Header libgen.h wurde implementiert.
  • Neue Funktionen btowc(), fwide(), mbsinit(), wctrans(), und towctrans() wurden der C-Laufzeitbibliothek hinzugefügt. Diese unterstützen Multibyte-Character-Sets gemäß dem ISO-C-Standard.
  • Die C99-Funktionen llabs(), lldiv() und _Exit() (äquivalent zu _exit() aus POSIX) wurden hinzugefügt, sowie die Makros fpclassify, isfinite, isinf, isnan, isnormal und signbit
Open Watcom 1.6 15. Dezember 2006
  • Unterstützung von __declspec für Variablen (nicht nur für Funktionen)
  • Fehlerbehebung
Open Watcom 1.7 18. August 2007
  • Die Größe des Stacks wurde für 32-Bit-DOS-Anwendungen standardmäßig von 4 KiB auf 64 KiB erhöht
  • Die Bibliotheken LIBC und CLIB wurden experimentell hinzugefügt
Open Watcom 1.7a 23. Oktober 2007
  • Regressionsfehler behoben[18]
Open Watcom 1.8 21. Februar 2009
  • Der Compiler nutzt verzögerte Initialisierung für Klassen-Templates und deren Mitglieder. Nur wenn diese auch tatsächlich genutzt werden, werden sie initialisiert.
  • Unterstützung der #pragma alias Direktive
  • In der Linux-Laufzeitbibliothek wurden die Funktionen recvfrom() und sendto() implementiert
  • Syntaxhervorhebung für Ressourcen-Dateien
Open Watcom 1.9 2. Juni 2010
  • Neue Schlüsselwörter __int8, __int16 und __int32
  • Die Win32-Header unterstützen die neuen Features von Windows 7
  • Unterstützung von OLE 2.0 für 16-Bit-Programme
  • Unterstützung der Zielplattformen RDOS und ZDOS
  • Unterstützung von langen Dateinamen (englisch Long File Names, LFN)
  • Dokumentation im CHM-Format
  • Syntaxhervorhebung für AWK-Dateien
Open Watcom 2.0 2. April 2015
  • Unterstützung von 64-Bit-Zielplattformen[6]
Schließen

Neben Watcom C 6.0 wurde 1988 auch eine günstigere, im Funktionsumfang reduzierte Entwicklungsumgebung namens Watcom Express C veröffentlicht.[10][19]

Nachdem die kommerzielle Vermarktung von Watcom C/C++ 2002 eingestellt wurde, wird das Produkt unter dem Namen Open Watcom C/C++ als Open-Source-Projekt kostenlos angeboten. Neben dem Compiler für C/C++ umfasst das Projekt auch noch den Open Watcom Assembler und Open Watcom Fortran 77.[20][8]

Werkzeuge

Neben der Hauptanwendung umfasst die Entwicklungsumgebung von Watcom C/C++ einige (z. T. optionale) Werkzeuge. Vor der Veröffentlichung von Open Watcom beinhaltete Watcom C/C++ neben den hauseigenen Werkzeugen auch Komponenten des Windows SDKs von Microsoft. Einige Werkzeuge überschneiden sich daher in ihrem Zweck. In Open Watcom wurden die Werkzeuge von Microsoft entfernt.[9]

Werkzeuge von Watcom

Watcom C/C++ und Open Watcom C/C++ stellen u. a. folgende Werkzeuge zur Verfügung:[21][22]

  • Dr. Watcom
    Eine Alternative bzw. ein Nachbau der Software Dr. Watson von Microsoft.[23]
  • Watcom Source Browser
    Ein Programm zur Visualisierung von Klassenbäumen und Abhängigkeiten.
  • Watcom Dialog Editor
    Ein Nachbau des Microsoft Dialog Editors. Ein WYSIWYG-Editor zur Gestaltung von grafischen Benutzeroberflächen.
  • Watcom DDE Spy
    Ein Nachbau von Microsoft DDE Spy zur Überwachung von DDE-Nachrichten.
  • Watcom Spy
    Nachbau von Microsoft Spy bzw. Spy++ zur Überwachung von GUI-Nachrichten.
  • Watcom Image Editor
    Nachbau des Microsoft Image Editors. Ein Editor für Rastergrafiken (BMP, ICO, CUR)
  • Watcom Resource Editor
    Ein Editor für RES-Dateien. Für Dialog-Ressourcen wird extern der Watcom Dialog Editor geöffnet und für Grafiken der Watcom Image Editor. Für Menüs und String-Tabellen existieren interne Editoren. Das Programm kann auch Ressourcen aus ausführbaren Dateien (u. a. EXE und DLL) anzeigen.
  • Watcom Profiler
    Leistungsüberwachung von Programmfunktionen.[24]
  • Watcom Debugger
    Ein Nachbau des Debuggers WinDbg von Microsoft. U. a. wird auch Remote-Debugging unterstützt. Anwendungen für Novell NetWare (NetWare Loadable Modules, NLM) können nur via Remote-Debugging überwacht werden. Um die Kommunikation zwischen NetWare und dem Debugger zu ermöglichen, werden entsprechende NLMs mitgeliefert.[25]
  • Watcom Zoom
    Ein Nachbau von Microsoft ZoomIn. Eine Softwarelupe.

Werkzeuge von Microsoft

Aus dem Windows SDK waren bis einschließlich Watcom C/C++ 11.0c u. a. folgende Programme enthalten:

  • Microsoft Dialog Editor
    Ein WYSIWYG-Editor zur Gestaltung von grafischen Benutzeroberflächen.
  • Microsoft DDE Spy
    Überwachung von DDE-Nachrichten.
  • Microsoft Spy
    Überwachung von GUI-Nachrichten.
  • Microsoft Image Editor
    Ein Editor für Rastergrafiken (BMP, ICO, CUR)
  • WinDbg
    Ein Debugger.
  • WinDiff
    Ein Werkzeug zum Vergleich von zwei Dateien.
  • Microsoft ZoomIn
    Eine Softwarelupe.
  • Microsoft Process Viewer
    Eine Software zum Überwachen von gerade ausgeführten Prozessen. Es können auch Prozesse von anderen Rechnern im Netzwerk überwacht werden, sofern dafür eine Berechtigung vorliegt.
  • Microsoft PortTool
    Ein Werkzeug, das alte API-Elemente im Quellcode automatisiert durch neuere Versionen ersetzen kann. Beispielsweise können die 16-Bit-Funktionen, -Makros und -Strukturen der Windows-API in die entsprechenden 32-Bit-Pendants umgewandelt werden.
  • Microsoft API Monitor
    Tracking von externen Funktionsaufrufen.[24]
  • Microsoft DispTest
    Eine im Funktionsumfang reduzierte Version der IDE von Visual Basic 3.0, mit der keine ausführbaren Dateien erstellt werden können. Das Programm dient v. a. zum Testen von VBX-Steuerelementen und generell von 16-Bit-COM-Komponenten, die u. a. mit Watcom C/C++ erstellt werden können.
  • Microsoft Font Editor
    Erstellung und Bearbeitung von Bitmap-Schriftarten im FNT-Format.
  • Microsoft Help Workshop
    Erstellung von Hilfe-Dateien auf Basis von WinHelp (HLP-Format).
  • Microsoft OLE/COM Object Viewer
    Ein Browser für alle registrierten COM-Objekte des Betriebssystems. Zudem können auch einzelne Typbibliotheken angezeigt werden.[26]
  • Microsoft Object Viewer (WinObj)
    Browser für Betriebssystemobjekte. Inzwischen ist die Software Teil von Windows Sysinternals.[27]
  • Microsoft TAPI Browser
    Übersicht über alle Komponenten und Funktionen der TAPI-Schnittstelle.

Vergleich mit anderen Compilern für C/C++

Obwohl Watcom C 9.5 auf einer vergleichbaren Stufe mit Visual C++ 1.5 oder Borland C++ 4.0 stand, bot die Softwareumgebung keine Klassenbibliothek für Windows an.[23] Visual C++ besaß MFC und Borland C++ OWL.[28]

Da der Watcom C Compiler im Vergleich zu den damaligen Konkurrenzprodukten besonders schnellen Code erzeugen konnte und ab Version 8.5 den DOS4GW DOS-Extender mitlieferte, mit dem 32 Bit Protected-Mode-Programme geschrieben werden konnten und dessen Runtime-Lizenz gebührenfrei war, wurde er zur Entwicklung mehrerer namhaften Spiele wie beispielsweise Doom, Descent, Death Rally, Retro City Rampage, Duke Nukem 3D, Vollgas und Warcraft 2 eingesetzt.[20][29][30][31]

Literatur

  • Wayne Russell: Watcom C/C++ Unleashed. Sams, ISBN 0-672-30893-2 (englisch).
  • Ulla Kirch, Peter Prinz: C – Lernen und professionell anwenden: Mit Microsoft Visual Studio Express 2012 und Open Watcom-Compiler auf der DVD. 3. Auflage. MITP, 2013, ISBN 978-3-8266-9504-9.
  • Andrew Schulman: Inside Watcom C 7.0/386. In: Dr. Dobb’s Journal. Band 15, Nr. 3, März 1990, ISSN 1044-789X, S. 74–83 (englisch, Volltext [abgerufen am 27. August 2025]).

Einzelnachweise

Related Articles

Wikiwand AI