.c frente a .cc frente a .cpp frente a .hpp frente a .h frente a .cxx [duplicado]

Resuelto user541686 asked hace 13 años • 6 respuestas

Posibles duplicados:
*.ho *.hpp para las definiciones de su clase
¿Cuál es la diferencia entre el sufijo de archivo .cc y .cpp?

Solía ​​pensar que solía ser eso:

  • .hLos archivos son archivos de encabezado para C y C++ y, por lo general, solo contienen declaraciones.
  • .cLos archivos son código fuente C.
  • .cppLos archivos son código fuente C++ (que también puede ser código fuente C).

luego aparecieron archivos como .hpp, .ccy .cxx, y me confundí por completo... ¿cuál es la diferencia entre ellos? ¿Cuándo usas los "nuevos"?

user541686 avatar Mar 03 '11 01:03 user541686
Aceptado

Históricamente, las primeras extensiones utilizadas para C++ fueron .cy .h, exactamente como para C. Esto causó problemas prácticos, especialmente los .cque no permitían que los sistemas de compilación diferenciaran fácilmente los archivos C++ y C.

Unix, en el que se desarrolló C++, tiene sistemas de archivos que distinguen entre mayúsculas y minúsculas. Algunos se usan .Cpara archivos C++. Otros usados .c++, .ccy .cxx. .Cy .c++tienen el problema de que no están disponibles en otros sistemas de archivos y su uso disminuyó rápidamente. Los compiladores de DOS y Windows C++ tendían a utilizar .cpp, y algunos de ellos hacen que la elección sea difícil, si no imposible, de configurar. La consideración de portabilidad hizo que esa elección fuera la más común, incluso fuera de MS-Windows.

Los encabezados han utilizado los correspondientes .H, .h++, .hh, .hxxy .hpp. Pero a diferencia de los archivos principales, .hsigue siendo hasta el día de hoy una opción popular para C++ incluso con la desventaja de que no permite saber si el encabezado se puede incluir en el contexto de C o no. Los encabezados estándar ahora no tienen ninguna extensión.

Además, algunos utilizan .ii, .ixx, .ipp, .inlpara encabezados que proporcionan definiciones en línea y .txx, .tppy .tplpara definiciones de plantillas. Estos se incluyen en los encabezados que proporcionan la definición o manualmente en los contextos donde se necesitan.

A los compiladores y herramientas generalmente no les importa qué extensiones se usan, pero usar una extensión que asocian con C++ evita la necesidad de rastrear cómo configurarlos para que reconozcan correctamente el lenguaje usado.

Edición de 2017: el soporte del módulo experimental de Visual Studio se reconoce .ixxcomo una extensión predeterminada para las interfaces del módulo, clang++ lo reconoce .c++my con el mismo propósito..cppm.cxxm

AProgrammer avatar Mar 02 '2011 18:03 AProgrammer

Esas extensiones no son realmente nuevas, son viejas. :-)

Cuando C++ era nuevo, algunas personas querían tener una extensión .c++ para los archivos fuente, pero eso no funcionaba en la mayoría de los sistemas de archivos. Así que intentaron algo parecido, como .cxx o .cpp.

Otros pensaron en el nombre del idioma y en "incrementar" .c para obtener .cc o incluso .C en algunos casos. No entendí mucho.

Algunos creían que si la fuente es .cpp, los encabezados deberían ser .hpp para coincidir. Moderadamente exitoso.

Bo Persson avatar Mar 02 '2011 18:03 Bo Persson