因为在StackOverflow的一些帖子中,如果可行,建议尝试支持多个(在本例中为C / C ++)编译器,因为这会强制您编写更符合标准的代码并帮助查找错误。
所以我一直在寻找额外的免费C / C ++编译器,我可以为我的项目添加支持(它是用C / C ++编写的(两种语言结合起来))。我发现Open Watcom是一个有趣的候选人。
所以我的问题是:Open Watcom C / C ++编译器与其他编译器(例如gcc / g ++,Visual C ++等)相比有哪些优点和缺点?
答案 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)编译器“约会”有关的表达式。那是什么意思呢?
现在它做了什么 - 除了支持16位真实和保护模式代码:
你如何“感觉”一个编译器?我一个人不知道该怎么做。这是错误消息的写法吗?是在控制台日志中的消息中吗?
世界上最强大的网络操作系统 - Novell Netware - 将Watcom作为其开发环境。关于Watcom的说法很多。并且任何人都会忘记:Netware因糟糕的营销管理以及Redmond犯规而死亡。它并非因缺乏技术优势而死亡。
我想我想说的是,那些不知道你在说什么的人应该不那么急于写答案。
我知道我知道这一切都是为了获得那些令人垂涎的积分和徽章以及你有什么。你如何得到它们是无关紧要的,对吗?
答案 3 :(得分:4)
Open Watcom编译器有点过时了。它是基于很久以前的一个很好的编译器来制作MS DOS游戏。目前它不是非常符合标准,其标准库处于不成熟状态。
我更喜欢更现代和流行的编译器,如Intel cc,g ++,VC ++或CLang。不确定Borland C,还没有尝试过很久。
答案 4 :(得分:4)
优点:
缺点:
答案 5 :(得分:1)