Hallo,
Ein Programm in "Plain C" genügt auch den Regeln von C++ und lässt sich jederzeit auch mit einem C++-Compiler übersetzen.
Das stimmt so pauschal nicht: Der C++-Standard verbietet implizite Casts von und zu (void *), d.h. folgende Konstruktion ist in C möglich, in C++ nicht:
int a = 5;
int *p = &a;
void *v = p;
In beiden Sprachen möglich (und korrekt) wäre:
int a = 5;
int *p = &a;
void *v = (void *)p;
Zudem definiert C++ einige neue Keywords, die C nicht kennt, d.h. folgender Stück Code wäre in C erlaubt, in C++ nicht:
char *class = "klassenname";
Man kann vielleicht sagen: C ist von C++ insofern eine Untermenge, als dass man alle C-Programme mit minimalem Aufwand so abändern kann, damit sie sich sowohl mit einem C- als auch mit einem C++-Compiler übersetzen lassen.
Viele Grüße,
Christian