Compatibilitat de C i C++

De la Viquipèdia, l'enciclopèdia lliure
Compatibilitat de C i C++

Tipuscomparació Modifica el valor a Wikidata
Característiques tècniques
PlataformaC standard library

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.[1][2] 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++,[3] 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 [4] 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.[5]

Referències[modifica]

  1. Stroustrup, Bjarne. «An Overview of the C++ Programming Language in The Handbook of Object Technology (Editor: Saba Zamir). CRC Press LLC, Boca Raton. 1999. ISBN 0-8493-3135-8.» (en anglès). Arxivat de l'original el 16 agost 2012. [Consulta: 12 agost 2009].
  2. B.Stroustrup. «C and C++: Siblings. The C/C++ Users Journal. July 2002.» (en anglès). [Consulta: 17 març 2019].
  3. «Bjarne Stroustrup's FAQ – Is C a subset of C++?» (en anglès). [Consulta: 22 setembre 2019].
  4. B. Stroustrup. «C and C++: A Case for Compatibility. The C/C++ Users Journal. August 2002.» (en anglès). Arxivat de l'original el 22 juliol 2012. [Consulta: 18 agost 2013].
  5. «C Dialect Options - Using the GNU Compiler Collection (GCC)» (en anglès). gnu.org. Arxivat de l'original el 26 març 2014.