9

由于在 StackOverflow 上的一些帖子中,建议在可行的情况下尝试支持多个(在本例中为 C/C++)编译器,因为这会迫使您编写更符合标准的代码并有助于发现错误。

所以我一直在寻找其他免费的 C/C++ 编译器,我可以为我的项目添加支持(它是用 C/C++ 编写的(两种语言相结合))。我发现 Open Watcom 是一个有趣的候选人。

所以我的问题是:与其他编译器(例如 gcc/g++、Visual C++ 等)相比,Open Watcom C/C++ 编译器的优缺点是什么?

4

6 回答 6

7

可能没有特别的优势,因为如果可移植代码是您的目标,您通常会尝试将代码限制为所有编译器实现的标准子集。我会说最低公分母,但这似乎有点贬义。

一个编译器相对于另一个编译器的优势通常在于它提供的扩展、它包含的库​​或生成代码的性能,如果您的目标是可移植性,那么您可能对这两者都不感兴趣。在这种情况下,您应该感兴趣的不是一个编译器相对于另一个编译器的优势,而是它对 ISO 标准的遵守和遵守。

在其早期的商业化身中,Watcom 是著名的最佳优化编译器之一。然而,我怀疑从那时起它是否跟上了处理器发展的步伐(甚至是从 16 位到 32 位 x86 的过渡!)。

在某些情况下,它可能被视为优势的一个特性是它支持 DOS、OS/2 和 Windows,但如果您的目标是维护遗留系统,这可能只是一个优势。将其移植到 Linux 和 BSD 以及 x86 以外的处理器的努力存在但尚未完成,而 GCC 已经存在并且已经存在多年。

我建议如果您可以支持 GCC 和 VC++,您可能有足够的编译器独立性(但建议您使用高警告级别设置进行编译(-Wall -Werror在 GCC 和\W4 \WxVC++ 中)。我认为与操作系统可移植性相比,编译器可移植性是一个微不足道的问题,并且您真正需要考虑的是跨平台库支持,而不是独立于编译器的代码支持。

但是,如果您喜欢使用编译器,请考虑使用Digital Mars编译器。与 Watcom 一样,这也具有商业编译器的传统,前世是 Zortech/Symantec C/C++ 编译器。

于 2010-12-23T17:18:08.620 回答
5

如果您的“haxxor”是您可以使用#pragma aux. 除此之外,我认为没有理由尝试使用这种过时的编译器,除非你有可怕的硬件限制。Imo,只有 3 个需要担心,GCC、ICC 和 MSVC

于 2010-12-23T18:33:48.517 回答
5

这里有些人使用与“过时”的 Watcom(实际上是 OpenWatcom)编译器有关的表达方式。那么这是什么意思呢?

  • 这可能意味着它没有实现最新的 C 标准。有多少“过时”的编译器可以做?
  • 这可能意味着它不提供框架,因为它主要是 C 和 ForTran 的环境,在此之后的某个地方出现了我无法判断的 C++ 实现。
  • 这可能意味着它无法从垃圾 C 代码中生成出色的汇编代码。
  • 这可能意味着它不支持 x64 开发。
  • 这可能意味着调试器是初级的并且支持汇编调试。

现在看看它的作用——除了支持 16 位实数和保护模式代码:

  • 它在每个人都用于 Win32 环境的平面内存模型中生成出色的 32 位保护模式代码。
  • 它的代码生成能力非常出色,并且在更多“过时”的编译器中位居榜首。
  • 使用它的分析器很容易调整多线程代码。

你如何“感觉”一个编译器?我一个人不知道该怎么做。是错误信息的写法吗?它在控制台日志上的消息中吗?

世界上最伟大的网络操作系统——Novell Netware——以 Watcom 作为其开发环境。这说明了关于 Watcom 的很多事情。以免有人忘记:Netware 因营销管理不善和 Redmond 犯规而死亡。它并没有因为缺乏卓越的技术而消亡。

我想我想说的是,你们不知道自己在说什么,也许应该不那么急于写答案。

我知道我知道这一切都是为了获得那些令人垂涎的积分和徽章以及你拥有的东西。你如何得到它们是无关紧要的,对吧?

于 2012-05-22T19:15:12.203 回答
4

Open Watcom 编译器有点过时了,感觉上。它基于很久以前用于制作 MS DOS 游戏的优秀编译器。目前它不是很符合标准,其标准库处于不成熟状态。

我更喜欢更现代和流行的编译器,如 Intel cc、g++、VC++ 或 CLang。不确定Borland C,很久没试过了。

于 2010-12-23T17:12:28.640 回答
4

好处:

  • 免费
  • 它是开源的。您可以随意更改它及其运行时库
  • 它是跨平台的。您可以在 Windows 和 Linux 等平台上运行它。此外,您可以使用它为不同平台构建程序,使用单一平台

缺点:

  • 它有点过时了,但没有过去那么多
于 2010-12-24T13:33:47.103 回答
1
正面 (2)
  1. 代码和项目不像 Microsoft Visual Studio/C++ 中的项目那样臃肿(不是数百个 vproj 和其他文件和文件夹)。您可以像在 GCC 中那样生成一个 makefile(这比 Visual Projects Makefiles 更好理解......)
  2. 与 2++ GBytes Visual Project 相比,即使安装也不需要太多时间(在 x64 Win 7 上)...
  3. 与 GCC 相比,它似乎更好处理
消极的
  1. 缺少 Clib:strn... 函数(strndup、strncmpi 等)、getoptlong
  2. 不支持 ARM(@ 2015 年 7 月 1 日)
  3. 作为编辑器,您应该真正使用 Notepad++,而不是内部编辑器
于 2015-07-11T09:40:19.723 回答