What is the difference between Borland, GCC and MinGW compilers?

MinGW and GCC are really the same compiler underneath. MinGW is a GCC port for the Windows platform.

The reasons why you would use different compilers (as in, based on different front-ends) are:

  • You have a binary-only library that is guaranteed to play nice only if you use particular compilers and those happen to be different compilers for different platforms
  • You need to target multiple platforms, and there is no compiler that targets all your platforms
  • You have legacy code that uses particular compiler extensions on different platforms.

When in doubt, use gcc. It is a venerable, old and well tested compiler that's free and used a lot, particulary in Linux space. minGW is a port of some GNU development utilities for Windows, including gcc.

I haven't used Borland's compiler. Ideally, your programs compiled with it should run exactly like when they're compiled using gcc.

Gcc and Borland basically do the same thing. Simplified, they take source code files as input and spit out executables as output. Their internal implementation is vastly different, but that shouldn't be your concern.

Differences that should matter to you are their command line flags and error/warning messages when something goes wrong.