Els llenguatges de programació C i C++ estan estretament relacionats, però tenen moltes diferències significatives. C++ va començar com una bifurcació d'un C preestandarditzat i va ser dissenyat per ser compatible principalment amb les fonts i els enllaços amb els compiladors C de l'època. A causa d'això, les eines de desenvolupament per als dos llenguatges (com ara IDE i compiladors) sovint s'integren en un sol producte, amb el programador capaç d'especificar C o C++ com a llenguatge font.

Tanmateix, C no és un subconjunt de C++, i els programes C no trivials no es compilaran com a codi C++ sense modificacions. De la mateixa manera, C++ introdueix moltes característiques que no estan disponibles en C i, a la pràctica, gairebé tot el codi escrit en C++ no s'ajusta al codi C. Aquest article, però, se centra en les diferències que fan que el codi C conforme sigui un codi C++ mal format, o sigui conforme/ben format en ambdós idiomes, però que es comporti de manera diferent en C i C++.

Bjarne Stroustrup, el creador de C++, ha suggerit que les incompatibilitats entre C i C++ s'han de reduir tant com sigui possible per tal de maximitzar la interoperabilitat entre els dos llenguatges. Altres han argumentat que com que C i C++ són dos llenguatges diferents, la compatibilitat entre ells és útil però no vital; segons aquest camp, els esforços per reduir la incompatibilitat no haurien d'obstaculitzar els intents de millorar cada llengua de manera aïllada. La justificació oficial de l'estàndard C de 1999 (C99) "avala [d] el principi de mantenir el subconjunt comú més gran" entre C i C++ "tot mantenint una distinció entre ells i permetent-los evolucionar per separat", i va afirmar que els autors eren "content de deixar que C++ sigui el llenguatge gran i ambiciós".

Diverses addicions de C99 no s'admeten a l'estàndard C++ actual o estan en conflicte amb les característiques de C++, com ara matrius de longitud variable, tipus de nombre complex nadiu i el qualificador de tipus restrict. D'altra banda, C99 va reduir algunes altres incompatibilitats en comparació amb C89 incorporant funcions de C++ com ara // comentaris i declaracions i codi mixtes.

Referències

Categoria:Llenguatge de programació C