Open Watcom的优点和缺点

时间:2010-12-23 16:32:24

标签: c++ c compiler-construction watcom

因为在StackOverflow的一些帖子中,如果可行,建议尝试支持多个(在本例中为C / C ++)编译器,因为这会强制您编写更符合标准的代码并帮助查找错误。

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

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

6 个答案:

答案 0 :(得分:6)

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

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

在其早期的商业化身中,Watcom是着名的最佳优化编译器之一;然而,我怀疑它是否跟上了处理器开发的步伐(或者甚至是16位到32位x86的转换!)。

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

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

如果您喜欢使用编译器,还可以考虑使用Digital Mars编译器。像Watcom一样,它也具有商业编译器的传统,曾经是Zortech / Symantec C / C ++编译器。

答案 1 :(得分:5)

如果您的'haxxor'是您可以使用#pragma aux定义超出普通调用约定的事实,那么watcom肯定会有所帮助。除此之外,我认为没有理由甚至尝试使用这种过时的编译器,除非你有可怕的硬件限制。 Imo,只有3个担心,GCC,ICC和MSVC

答案 2 :(得分:5)

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

  • 这可能意味着它没有实施最新的C标准。怎么样 许多“未注明日期”的编译器呢?
  • 这可能意味着它不提供主要的框架 C和ForTran的环境以及之后的某个地方 我无法判断的C ++实现。
  • 这可能意味着它无法生成出色的汇编代码 垃圾C代码。
  • 这可能意味着它不支持x64开发。
  • 这可能意味着调试器是基本的并支持汇编 调试。

现在它做了什么 - 除了支持16位真实和保护模式代码:

  • 它在平面存储器中产生出色的32位保护模式代码 每个人都使用的模型用于Win32环境。
  • 它的代码生成功能非常出色,并且正确 在顶部有更多“非日期”编译器。
  • 使用其分析器调整多线程代码很容易。

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

世界上最强大的网络操作系统 - Novell Netware - 将Watcom作为其开发环境。关于Watcom的说法很多。并且任何人都会忘记:Netware因糟糕的营销管理以及Redmond犯规而死亡。它并非因缺乏技术优势而死亡。

我想我想说的是,那些不知道你在说什么的人应该不那么急于写答案。

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

答案 3 :(得分:4)

Open Watcom编译器有点过时了。它是基于很久以前的一个很好的编译器来制作MS DOS游戏。目前它不是非常符合标准,其标准库处于不成熟状态。

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

答案 4 :(得分:4)

优点:

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

缺点:

  • 它已经过时了,但没有像过去那么多

答案 5 :(得分:1)

正面(2)
  1. 代码和项目不像Microsoft Visual Studio / C ++中的项目那样膨胀(不是数百个vproj和其他文件和文件夹)。你可以像在GCC中那样生成一个makefile(比Visual Projects Makefile更好理解......)
  2. 即使安装也没有太大的时间(在x64 Win 7上),与2 ++ GBytes Visual Project的比较......
  3. 与GCC相比,似乎最好处理
    1. Clib缺失:strn ... functions(strndup,strncmpi等),getoptlong
    2. 没有ARM支持(@ 2015年7月1日)
    3. 作为编辑,您应该使用Notepad ++,而不是内部编辑器