Cfront este un compilator C++ timpuriu, numit apoi C cu clase, care a convertit C ++ în C. Dezvoltat de Bjorn Stroustrup la AT&T Bell Labs în jurul anului 1983 . Nu a înțeles toate detaliile limbii, cea mai mare parte a fost realizată cu ajutorul traducerii obișnuite. Cfront a inclus un parser, un generator de tabele de caractere și arbori de clase, funcții și multe altele. Cfront a fost bazat pe CPre , compilatorul C din 1979 .
Deoarece a fost scris în C++ timpuriu, a fost problematic să îl rulați fără un compilator adecvat. Împreună cu codul Cfront în C++, a existat o versiune C semifinisată autogenerată. Acest cod C ar putea fi compilat și apoi folosit pentru a rula versiunea C++ a Cfront.
O mare parte din efortul de portare de a rula Cfront pe o mașină nouă a implicat I/O standard. Fluxurile Cfront C++ erau strâns legate de fluxurile I/O tamponate ale bibliotecii C, dar au interacționat puțin cu restul mediului C. Compilatorul putea fi portat la majoritatea derivatelor System V fără prea multe schimbări, dar sistemele bazate pe BSD aveau în general mult mai multă variație în bibliotecile lor C și structurile stdio aferente.
Cfront a definit limbajul până în aproximativ 1990 , multe dintre caracteristicile limbajului au fost legate de traducerea C++ în C. Unele dintre ele rămân încă în compilatoarele moderne; Deformarea numelui a venit de la Cfront, linkerii primitivi ai zilei nu acceptau informații de tip în simboluri, iar unele modele de instanțiere a șablonului sunt derivate din eforturile Cfront timpurii.
Cfront 4.0 a fost abandonat după o încercare eșuată de a adăuga suport pentru excepții [1] C++ a crescut dincolo de limitele sale. Mai târziu a apărut un compilator cu o abordare similară, numit Comeau C/C++ .