Compilers for languages such as C++, C, Java, and C# will spit out boatloads of errors if the parser comes upon a missing quotation mark, semicolon, or brace that throws off the whole rest of the code structure. Often, one missing character produces so many errors that they scroll right off the display. To work around's inability to redirect stderr, compilers will do one of three things:

  • Provide a short program that redirects stderr to a file (like DJGPP uses),
  • Include such a redirector in the compiler itself, or
  • Stop listing errors at about the 20th error, and output an "Error: Too many errors" message.
LCC, the (non-free) C compiler used for Quake III Arena, used the final approach. So did some versions of Borland's Turbo C++, if I recall. The idea is that if you fix one error at the top of the translation unit, it'll clear up more errors at the bottom, and after repeated attempts to compile the code, you will have reduced the errors until they actually fit on your display.

Fast fact: Pentium 4 was optimized specifically for LCC's code generator so that Intel could advertise higher framerate in Q3A.