由于在 StackOverflow 上的一些帖子中,建议在可行的情况下尝试支持多个(在本例中为 C/C++)编译器,因为这会迫使您编写更符合标准的代码并有助于发现错误。
所以我一直在寻找其他免费的 C/C++ 编译器,我可以为我的项目添加支持(它是用 C/C++ 编写的(两种语言相结合))。我发现 Open Watcom 是一个有趣的候选人。
所以我的问题是:与其他编译器(例如 gcc/g++、Visual C++ 等)相比,Open Watcom C/C++ 编译器的优缺点是什么?
由于在 StackOverflow 上的一些帖子中,建议在可行的情况下尝试支持多个(在本例中为 C/C++)编译器,因为这会迫使您编写更符合标准的代码并有助于发现错误。
所以我一直在寻找其他免费的 C/C++ 编译器,我可以为我的项目添加支持(它是用 C/C++ 编写的(两种语言相结合))。我发现 Open Watcom 是一个有趣的候选人。
所以我的问题是:与其他编译器(例如 gcc/g++、Visual C++ 等)相比,Open Watcom C/C++ 编译器的优缺点是什么?
可能没有特别的优势,因为如果可移植代码是您的目标,您通常会尝试将代码限制为所有编译器实现的标准子集。我会说最低公分母,但这似乎有点贬义。
一个编译器相对于另一个编译器的优势通常在于它提供的扩展、它包含的库或生成代码的性能,如果您的目标是可移植性,那么您可能对这两者都不感兴趣。在这种情况下,您应该感兴趣的不是一个编译器相对于另一个编译器的优势,而是它对 ISO 标准的遵守和遵守。
在其早期的商业化身中,Watcom 是著名的最佳优化编译器之一。然而,我怀疑从那时起它是否跟上了处理器发展的步伐(甚至是从 16 位到 32 位 x86 的过渡!)。
在某些情况下,它可能被视为优势的一个特性是它支持 DOS、OS/2 和 Windows,但如果您的目标是维护遗留系统,这可能只是一个优势。将其移植到 Linux 和 BSD 以及 x86 以外的处理器的努力存在但尚未完成,而 GCC 已经存在并且已经存在多年。
我建议如果您可以支持 GCC 和 VC++,您可能有足够的编译器独立性(但建议您使用高警告级别设置进行编译(-Wall -Werror
在 GCC 和\W4 \Wx
VC++ 中)。我认为与操作系统可移植性相比,编译器可移植性是一个微不足道的问题,并且您真正需要考虑的是跨平台库支持,而不是独立于编译器的代码支持。
但是,如果您喜欢使用编译器,请考虑使用Digital Mars编译器。与 Watcom 一样,这也具有商业编译器的传统,前世是 Zortech/Symantec C/C++ 编译器。
如果您的“haxxor”是您可以使用#pragma aux
. 除此之外,我认为没有理由尝试使用这种过时的编译器,除非你有可怕的硬件限制。Imo,只有 3 个需要担心,GCC、ICC 和 MSVC
这里有些人使用与“过时”的 Watcom(实际上是 OpenWatcom)编译器有关的表达方式。那么这是什么意思呢?
现在看看它的作用——除了支持 16 位实数和保护模式代码:
你如何“感觉”一个编译器?我一个人不知道该怎么做。是错误信息的写法吗?它在控制台日志上的消息中吗?
世界上最伟大的网络操作系统——Novell Netware——以 Watcom 作为其开发环境。这说明了关于 Watcom 的很多事情。以免有人忘记:Netware 因营销管理不善和 Redmond 犯规而死亡。它并没有因为缺乏卓越的技术而消亡。
我想我想说的是,你们不知道自己在说什么,也许应该不那么急于写答案。
我知道我知道这一切都是为了获得那些令人垂涎的积分和徽章以及你拥有的东西。你如何得到它们是无关紧要的,对吧?
Open Watcom 编译器有点过时了,感觉上。它基于很久以前用于制作 MS DOS 游戏的优秀编译器。目前它不是很符合标准,其标准库处于不成熟状态。
我更喜欢更现代和流行的编译器,如 Intel cc、g++、VC++ 或 CLang。不确定Borland C,很久没试过了。
好处:
缺点: