Введение

Watcom C/C++ (в настоящее время Open Watcom C/C++) — это интегрированная среда разработки (IDE) компании Watcom International Corporation для языков программирования C, C++ и Fortran. Watcom C/C++ был коммерческим продуктом до прекращения его выпуска, после чего был выпущен под лицензией Sybase Open Watcom Public License как Open Watcom C/C++. Он включает в себя инструменты для разработки и отладки кода для операционных систем DOS, OS/2, Windows и Linux, работающих на процессорах, совместимых с x86 (16 бит), IA-32 (32 бит) или x86-64 (64 бит).

История

Хотя компиляторы Watcom C/C++ и Watcom Fortran больше не продаются Sybase, они стали доступны бесплатно в составе пакета Open Watcom. Стабильная версия 1.9 была выпущена в июне 2010 года. Выпущена ответвлённая бета-версия 2.0, поддерживающая 64-битные платформы (Windows и Linux), встроенный текстовый редактор, двухэтапную систему сборки, а версия для DOS – длинные имена файлов (LFN).

Дизайн

Компилятор может работать и генерировать исполняемый код для операционных систем DOS, OS/2, Windows, Linux. Он также поддерживает целевые платформы NLM для Novell NetWare. Ведётся работа по расширению поддержки Linux и современных операционных систем BSD (например, FreeBSD), работающих на процессорах x86, PowerPC и других. Код переносим, и, как и многие другие компиляторы с открытым исходным кодом, такие как GCC или LCC, бэкенд компилятора (генератор кода) является перенастраиваемым.

Применение

В середине 1990-х годов такие технически сложные DOS-игры, как Doom, Descent и Tomb Raider, были созданы с использованием Watcom C/C++ и расширителя защищенного режима DOS/4GW с компилятором Watcom. В 2015 году он использовался для портирования игры Retro City Rampage на DOS. VirtualBox использует его для компиляции BIOS. Современная разработка для FreeDOS требует, чтобы весь исходный код на C компилировался Open Watcom C.

Open Watcom является рекомендуемым компилятором для разработки приложений и драйверов для операционной системы ArcaOS, основанной на OS/2.

Варианты

На GitHub существует неофициальный форк Open Watcom V2. Вариант запуска 16-битной DOS CRT библиотеки был создан с использованием WASM.

Совместимость

Синтаксис Open Watcom поддерживает многие соглашения, введенные другими компиляторами, такими как Microsoft и Borland, включая различные соглашения относительно (например) количества начальных подчеркиваний в теге "asm". Код, написанный специально для другого компилятора, а не в соответствии со стандартами C или C++, часто компилируется компилятором Watcom. Компилятор по умолчанию поддерживает стандарты C89/C90. Open Watcom поддерживает частичную совместимость со стандартом C99, реализуя наиболее часто используемые части этого стандарта. Однако они включаются только с помощью неофициального переключателя командной строки "za99". Три функции C99 были добавлены как расширение C90 еще до версии 1.0: комментарии в стиле C++ (//), гибкие члены массивов и разрешенная завершающая запятая в объявлении перечисления (enum). В настоящее время компилятор не поддерживает новых основных функций C11, хотя библиотека C включает функции "Safe C". Они описаны в ISO/IEC TR 24731-1 и известны как "интерфейсы проверки границ (Приложение K)" в C11. Примеры имен функций: strcpy_s, memcpy_s, printf_s. Эта библиотека была выпущена вместе с Open Watcom 1.5 в апреле 2006 года.