.cc o .cpp: ¿qué extensión elegir para el código en C++?

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Un lenguaje, decenas de extensiones

\n\n

Si estás empezando a aprender C++, seguramente te has encontrado con esta situación: ves un tutorial o un ejemplo de código en GitHub, y los archivos se llaman main.cpp, utils.cc, o incluso program.cxx o source.C. Surge la pregunta lógica: "¿Cuál es la diferencia? ¿Son lenguajes diferentes? ¿O es solo un capricho de alguien?"

\n\n

No estás solo. En Stack Overflow, la pregunta "C++ code file extension? What is the difference between .cc and .cpp" ha acumulado cientos de miles de visitas. Y no es de extrañar: incluso los desarrolladores experimentados a veces se confunden con estos detalles aparentemente menores. Hoy vamos a resolver este rompecabezas de una vez por todas. Aprenderás de dónde vienen las diferentes extensiones, si hay alguna diferencia técnica entre ellas y qué extensión debería elegir un principiante.

\n\n

Respuesta breve: no hay diferencia técnica

\n\n

Vamos a aclarar el punto principal de inmediato. Desde el punto de vista del compilador y del lenguaje C++, no hay absolutamente ninguna diferencia entre .cc y .cpp. Son solo dos formas diferentes de indicarle al sistema operativo y a las herramientas de compilación que se trata de código fuente en C++.

\n\n

Los compiladores (GCC, Clang, MSVC) entienden ambas extensiones. Puedes tomar un archivo hello.cc, renombrarlo a hello.cpp y compilarlo sin hacer ni un solo cambio en el código. Aquí tienes un ejemplo sencillo:

\n\n
// Archivo: hello.cc\n#include <iostream>\n\nint main() {\n    std::cout << "¡Hola desde un archivo .cc!" << std::endl;\n    return 0;\n}
\n\n

Se puede compilar así:

\n
g++ hello.cc -o hello
\n\n

Y ahora lo renombramos a hello.cpp:

\n
g++ hello.cpp -o hello
\n\n

El resultado será idéntico. Al compilador no le importa cómo se llame el archivo; solo importa su contenido y que le hayas indicado explícitamente el lenguaje (o que el compilador lo deduzca por la extensión).

\n\n

Origen histórico: ¿de dónde vienen .cc y .cpp?

\n\n

Para entender por qué existen tantas extensiones, hay que mirar la historia. C++ se creó como una extensión del lenguaje C. Los primeros compiladores (por ejemplo, Cfront) eran simplemente preprocesadores que traducían C++ a C normal.

\n\n

La extensión .cc — herencia de Unix

\n

En los sistemas operativos de la familia Unix (y en particular, en las primeras versiones de AT&T Unix) existía la tradición de usar extensiones cortas de dos caracteres. Esto se debía a las limitaciones de los sistemas de archivos: por ejemplo, en s5fs (System V), la longitud del nombre del archivo estaba muy restringida. Así surgieron:

\n
    \n
  • .c — para archivos C
  • \n
  • .cc — para archivos C++ (C + C = CC)
  • \n
  • .h — para archivos de cabecera
  • \n
\n

La extensión .cc se convirtió en el estándar de facto en el mundo Unix y Linux. Muchos proyectos grandes (por ejemplo, Google Chromium, LLVM) todavía la utilizan.

\n\n

La extensión .cpp — la era de DOS y Windows

\n

Cuando C++ comenzó a ganar popularidad en el mundo de las PC, surgió el ecosistema de DOS y las primeras versiones de Windows. Aquí las limitaciones eran diferentes, pero surgió otra necesidad: hacer que la extensión fuera lo más clara posible. .cpp significa C Plus Plus — una referencia directa al lenguaje. Esta extensión se popularizó gracias a:

\n
    \n
  • El entorno de desarrollo Borland C++
  • \n
  • Microsoft Visual C++
  • \n
  • Los tutoriales y libros de C++ (para que los principiantes entendieran de inmediato de qué se trataba)
  • \n
\n\n

Otras extensiones viajeras

\n

Además de los dos principales candidatos, en el mundo de C++ se pueden encontrar otras extensiones:

\n
    \n
  • .cxx — otra variante de "C++", popular en algunos sistemas Unix (por ejemplo, IBM AIX)
  • \n
  • .C (C mayúscula) — utilizada por algunos compiladores para distinguir entre C (.c) y C++ (.C) en sistemas donde las mayúsculas importan (por ejemplo, en sistemas antiguos

Blogs

Book Recommendations