在DOS集成开发环境中,Watcom C/C++ 编译器以编译后的exe运行高速而著称,且首个支持英特尔 80386 "保护模式"的编译器。于90年代中期,大批的雄心技术游戏(例如 Doom、Descent、Duke Nukem 3D)都以 Watcom C 写成。

基本介绍

Watcom C/C++ 编译器、Watcom Fortran 编译器已经不在其先前所属公司sybase售卖,而被 SciTech 软件公司作为 Open Watcom 开源包发行。类似于其他的开源编译器(例如 [GCC])项目,Watcom C代码小而便携,其编译器后端(代码生成器)的目标码可变。该编译器可在dos、OS/2、Windows等操作系统上运行,并生成各种可运行的(不必是该操作系统的)代码。该编译器支持Novell NetWare的NLM目标码。目前正进行为Linux、modern BSD (例如FreeBSD)操作系统重定目标码,以便在x86、PowerPC及其它处理器上运行。Open Watcom C/C++的1.4版于2005年12月发行,采用Linux x86为实验目标,支持NT、OS/2等host平台。曾有某被弃置的QNX版本,但其编译所需的库并未开源发行。当前最近的稳定版是1.9版,在2010年6月发行。

Open Watcom的C语法兼容其他(例如微软、Borland)编译器,对“_asm”标识符支持(for instance)略有不同。其他编译器能对付的C代码Watcom也能对付,而且质量更优、效率更高。

Open Watcom C/C++的许可证虽然被开源促进会批准为开源许可证,但Debian、fedora自由软件基金会已拒绝该许可证,因为它要求在“部署”受涵盖软件时公开发布源代码,而“部署”的定义包括许多类型的私有使用。

发展历程

Open Watcom C/C++作为一款商业产品,直到停产后,根据sybase Open Watcom公共许可证以Open Watcom C/C++的名义发布。分叉版本2.0 beta已经发布,支持64位主机(Windows和Linux)、内置文本编辑器、两阶段构建系统,并且DOS版本支持长文件名(LFN)。Open Watcom Wiki提供了全面的历史记录。

设计特点

Open Watcom C/C++的设计使得它可以由DOS、OS/2、Windows、Linux操作系统操作,并为这些操作系统生成可执行代码。它还支持Novell NetWare的NLM目标,并且正在进行的工作旨在将目标范围扩展到运行在x86、PowerPC和其他处理器上的Linux和现代BSD操作系统。该代码是可移植的,并且编译器后端是可以重新定向的。

应用实例

除了在20世纪90年代中期的一些技术上最具野心的DOS电脑游戏外,Open Watcom C/C++还被用于在2015年将游戏《逆城暴走》移植到DOS。VirtualBox使用它来编译BIOS。FreeDOS的当前开发要求所有C源代码都必须能够被Open Watcom C编译。Open Watcom是推荐的OS/2基础的ArcaOS操作系统的应用程序和驱动程序开发编译器。

语言标准支持

Open Watcom C/C++默认支持C89/C90标准,并支持与C99标准的部分兼容性。它实现了C99标准中最常用的部分,但这些特性仅通过未记录的命令行开关“-za99”启用。三个C99特性已作为C90扩展打包,自pre-v1.0以来:C++样式注释(//)、灵活数组成员、枚举声明中允许尾随逗号。该编译器目前不支持任何新的主要C11特性,但C库确实包含“安全C”函数,这些在ISO/IEC TR 24731-1中指定,在C11中称为“边界检查接口(附件K)”。一些函数名称示例包括strcpy_s()、memcpy_s()、printf_s()。此库随Open Watcom 1.5于2006年4月发布。

发行历史

参考资料