Borland、GCC和MinGW编译器有什么区别?

9

我已经有一段时间以中级水平进行编程了。我已经在不同的编译器中执行相同的代码(主要是GCC和MinGW),但我无法区分这些编译器之间的差异。我的意思是,有什么方式可以使其中一个更好呢?或者有什么使它们不同的东西吗?是否有某些特殊需求,您可能希望使用GCC,而对于其他一些需求,则可能需要使用MinGW?


1
Borland编译器的主要问题在于它不再属于Borland(或他们今年的任何名称)。他们已将其出售给Embarcadero。 - sbi
2
我更关注技术差异而非它们的名称。它们一定有一些优点和缺点,而另一个可能会弥补这个问题。 - Rahul
https://dev59.com/NXRA5IYBdhLWcg3w8iol - Flexo
4个回答

6

MinGW和GCC在实质上是同一个编译器。MinGW是针对Windows平台的GCC端口。

你使用不同的编译器(即基于不同前端)的原因可能是:

  • 你有一个仅当你使用特定编译器时才能保证正常运行的二进制库,而这些编译器恰好是不同平台的不同编译器
  • 你需要面向多个平台,并且没有一个编译器可以覆盖所有平台
  • 你有遗留代码,在不同平台上使用了特定的编译器扩展。

那么我的意思是,如果我从一个编译器获取了一个已编译的二进制文件,如果我尝试通过另一个编译器来执行它,它可能无法运行? - Rahul
1
@Rahul:一旦你有了可执行文件,就不再需要编译器来执行它。如果你使用编译器A构建了一个库,那么除非两个编译器都针对同一平台并且其中一个已经记录支持该平台,否则它不能与编译器B一起使用。 - Bart van Ingen Schenau

5
当你不确定的时候,使用GCC。它是一款古老而经过充分测试的编译器,在Linux领域特别广泛使用,并且是免费的。MinGW是一种为Windows开发的GNU开发工具的移植版本,其中包括GCC。
我没有使用过Borland的编译器。理想情况下,使用Borland编译的程序应该与使用GCC编译的程序完全相同。
GCC和Borland基本上做着相同的事情。简单来说,它们将源代码文件作为输入,生成可执行文件作为输出。它们的内部实现方式有很大的差异,但这不应该是你关心的问题。
对你来说应该关注的是它们的命令行标志以及在出现错误/警告时的错误/警告信息。

1
一个巨大的区别是,Borland只专注于Windows系统(至少在我使用它时是这样),因此它拥有许多非常好用的自定义Windows特定命令和库。GCC则更加通用,要做与Borland相同的事情可能需要更多的工作,而且不那么轻松。

-1
Borland是Turbo C++中使用的编译器。它与GCC/MinGW的工作方式不同。头文件必须包含。
#include <iostream.h>
#include <conio.h>

并且

using namespace std;

在Borland中不使用

,就像GCC一样。

在GCC中,我们从...开始。

#include <iostream>
using namespace std;

在Borland中,命名空间会自动选择,并且您还需要包含输入输出条件,例如#include <conio.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接