Welcher C++ Compiler vesteht C
-
Im aktuellen C++ Standard steht, dass der C++ Compiler mindestens zu ANSI C von 1990 kompatibel sein muss, aber es ist auch erlaubt, moderneren C-Normen zu folgen.
VC++ 2003 ist weitestgehend zu den aktuellen C++ und C Normen kompatibel.
GCC ist ein bisschen besser ausgeruestet.
Generell gilt: Wenn man als Dateiendung ".c" verwendet, wird ein reiner C Compiler aufgerufen. Nur bei den Dateiendungen ".cpp", ".cxx", ".c++", und ".CC" wird der C++ Compiler aufgerufen.
Programme wie "gcc" (GNU) und "cl" (Microsoft) sind Frontends, die Anhand der Dateiendung das entsprechende Programm starten.
Uebrigens: Das Beispiel
main() { printf( "hello world!\n" ); exit(0); }
ist auch in ANSI C90 bzw. C99 ein Syntax-Fehler (es fehlen bei "main" Argumentliste und Rueckgabetyp). Jedoch sind reine C Compiler meist noch abwaertskompatibel zu den alten K&R-de-facto-Standards aus den 70ern und 80ern. In C++ Compilern ist das nicht erforderlich.
Ein C++ Compiler muss als Ausgabe keine Binaerdatei erzeugen, er kann auch, wie frueher, nur nach C uebersetzen (oder Pascal oder was auch immer).