Da sostenitore del C++, ritengo che ci siano innumerevoli vantaggi rispetto al C; tuttavia il C ha comunque alcuni vantaggi; essendo un linguaggio molto semplice, è difficile che un compilatore contenga grossi bachi, per cui raramente si incontrano problemi di compatibilità tra un compilatore e l'altro; inoltre esistono compilatori C praticamente per ogni piattaforma, microcontrollori compresi. Il C++ invece necessita di un compilatore molto più complesso, e alcune caratteristiche (eccezioni, RTTI) richiedono anche un runtime più complesso rispetto a quello del C.
Inoltre il C++, proprio per alcune sue caratteristiche avanzate, nella maggior parte dei sistemi operativi può essere problematico da usare in ambiti quali la scrittura di driver kernel-mode; d'altra parte l'intero sistema operativo Haiku è scritto in C++, per cui se l'idea è fin dall'inizio di usare il C++ questi problemi si possono aggirare.
Uno dei punti più problematici è l'assenza di un'ABI definita; se per il C questo è facile (dopotutto si tratta semplicemente di decidere se mettere i parametri sullo stack in un verso o nell'altro, che registri usare e chi pulisce lo stack), per il C++ è molto più complesso, perché funzionalità come il polimorfismo (implementato solitamente tramite vtable), le eccezioni, RTTI e compagnia possono essere implementate in maniera differente da ogni produttore di compilatori, per cui la compatibilità tra librerie compilate con compilatori differenti è difficile da ottenere.