Open Watcom的优点和缺点

Nub*_*bok 9 c c++ compiler-construction watcom

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

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

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

Cli*_*ord 6

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

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

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

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

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

但是,如果你喜欢使用编译器,也可以考虑使用Digital Mars编译器.与Watcom一样,它也具有商业编译器的传统,在以前的生活中一直是Zortech/Symantec C/C++编译器.

  • *“甚至从 16 位过渡到 32 位 x86”* - 你是什么意思?Watcom 在 DOS 下对 32b 的支持是(可能仍然**是**)最好的之一。如果您确实想在 1993 年左右为 DOS 执行任何 32b 保护模式(就像那个时代的大多数游戏,包括 DOOM 之类的游戏),那么您确实选择了 Watcom 编译器和 DOS 扩展器。.... 不幸的是,它自 2012 年以来似乎已经死了,当然它不知道 x86-64 或 C++11,即您的答案有点有效,只是稍晚了一点,速度是没有保留,在 32b 时刻它非常领先。 (2认同)

Nec*_*lis 5

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


Olo*_*ell 5

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

  • 这可能意味着它没有实施最新的C标准.有多少"未注明日期"的编译器呢?
  • 它可能意味着它不提供框架,因为它主要是C和ForTran的环境,并且在那之后的某个地方出现了我无法判断的C++实现.
  • 这可能意味着它无法从垃圾C代码生成出色的汇编代码.
  • 这可能意味着它不支持x64开发.
  • 这可能意味着调试器是基本的并支持汇编调试.

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

  • 它在每个人都用于Win32环境的平面内存模型中生成出色的32位保护模式代码.
  • 它的代码生成功能非常出色,并且它位于顶部,带有更多"非日期"编译器.
  • 使用它的探查器很容易调整多线程代码.

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

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

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

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