Cfront

Source: Wikipedia, the free encyclopedia.

Cfront was the original

function
, etc. Cfront was based on CPre, a C compiler started in 1979.

As Cfront was written in C++, it was a challenge to bootstrap on a machine without a C++ compiler/translator. Along with the Cfront C++ sources, a special "half-preprocessed" version of the C code resulting from compiling Cfront with itself was also provided. This C code was to be compiled with the native C compiler, and the resulting executable could then be used to compile the Cfront C++ sources.

Most of the porting effort in getting Cfront running on a new machine was related to standard I/O. Cfront's C++ streams were closely tied in with the C library's buffered I/O streams, but there was little interaction with the rest of the C environment. The compiler could be ported to most

BSD
-based systems usually had many more variations in their C libraries and associated stdio structures.

Cfront defined the language until circa 1990, and many of the more obscure corner cases in C++ were related to its C++-to-C translation approach. A few remnants of Cfront's translation method are still found in today's C++ compilers; name mangling was originated by Cfront, as the relatively primitive linkers at the time did not support type information in symbols, and some template instantiation models are derived from Cfront's early efforts. C++ (and Cfront) was directly responsible for many improvements in Unix linkers and object file formats, as it was the first widely used language which required link-time type checking, weak symbols, and other similar features.

Cfront 4.0 was abandoned in 1993 after a failed attempt to add exception support.[1] The C++ language had grown beyond its capabilities; however a compiler with similar approach became available later, namely Comeau C/C++.

Analogous to the way cfront can process C++ source code into something that can be compiled by previously-available C compilers, cppfront processes source code written in new and experimental C++ 'syntax 2' into something that can be compiled by previously-available 'syntax 1' C++ compilers.[2][3]

References

Notes
  • Bjarne Stroustrup. "Evolving a language in and for the real world: C++ 1991-2006" (PDF). Archived from the original (PDF) on 2007-11-20.
  • Bjarne Stroustrup. "Bjarne Stroustrup's FAQ".
  • Bjarne Stroustrup. "The Design and Evolution of C++".

External links

This page is based on the copyrighted Wikipedia article: Cfront. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy