die Fälle, in denen C-Konstrukte nicht sofort in C++ funktionieren, kann man an 1 Hand abzählen - meist liegt es daran, dass z.B. C gewisse Ungenauigkeiten zulässt, die bei C++ nicht direkt funktionieren, weil es reservierte Keywords sind oder man Statements präzisieren muss, z.B. :
Das ist aber derart ausgesucht, dass es IMO vernachlässigbar ist.1) new is a keyword in C++ so can't be used as a variable name.
2) C++ doesn't allow automatic pointer conversion.
3) C++ doesn't allow you to call undeclared functions.
4) in C++ struct and typedef have the same scope so the same identifier can't be used for each, in C they are separate.
5) ISO C++ forbids converting a string constant to ‘char*’ )
Tatsächlich ist C++ definierbar als {C plus Objekte plus Stream plus Überladung}, und von daher ist C durchaus eine Untermenge von C++.
C würde ich als prozedural vs. C++ = objektorientiert definieren - C++ lässt aber auch weiterhin rein prozedurales Programmieren zu oder Mischformen (weil es die vormalige C-Syntax samt ihrer Möglichkeiten ebenfalls noch zulässt), anders als andere rein objektorientierte Sprachen wie Java.
Viele meiner prozeduralen C-Programme (mit wiringPi, openVG und pthread auf dem Raspi) lassen sich sowohl mit GCC (C99 oder C11 usw.) als auch - völlig unverändert - mit g++ (C++11/14) kompilieren und starten, und wenn man dann Objekte hinzunimmt, läuft alles nach wie vor mit C++ weiter (aber dann ntl nicht mehr mit ANSI-C).
Lesezeichen