@c Copyright (C) 1988-2022 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @node G++ and GCC @chapter Programming Languages Supported by GCC @cindex GCC @cindex GNU Compiler Collection @cindex GNU C Compiler @cindex Ada @cindex D @cindex Fortran @cindex Go @cindex Objective-C @cindex Objective-C++ GCC stands for ``GNU Compiler Collection''. GCC is an integrated distribution of compilers for several major programming languages. These languages currently include C, C++, Objective-C, Objective-C++, Fortran, Ada, D, and Go. The abbreviation @dfn{GCC} has multiple meanings in common use. The current official meaning is ``GNU Compiler Collection'', which refers generically to the complete suite of tools. The name historically stood for ``GNU C Compiler'', and this usage is still common when the emphasis is on compiling C programs. Finally, the name is also used when speaking of the @dfn{language-independent} component of GCC: code shared among the compilers for all supported languages. The language-independent component of GCC includes the majority of the optimizers, as well as the ``back ends'' that generate machine code for various processors. @cindex COBOL @cindex Mercury The part of a compiler that is specific to a particular language is called the ``front end''. In addition to the front ends that are integrated components of GCC, there are several other front ends that are maintained separately. These support languages such as Mercury, and COBOL@. To use these, they must be built together with GCC proper. @cindex C++ @cindex G++ @cindex Ada @cindex GNAT Most of the compilers for languages other than C have their own names. The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we talk about compiling one of those languages, we might refer to that compiler by its own name, or as GCC@. Either is correct. @cindex compiler compared to C++ preprocessor @cindex intermediate C version, nonexistent @cindex C intermediate output, nonexistent Historically, compilers for many languages, including C++ and Fortran, have been implemented as ``preprocessors'' which emit another high level language such as C@. None of the compilers included in GCC are implemented this way; they all generate machine code directly. This sort of preprocessor should not be confused with the @dfn{C preprocessor}, which is an integral feature of the C, C++, Objective-C and Objective-C++ languages.