in

nombres de archivo: extensión de archivo de código C ++? ¿Cuál es la diferencia entre .cc y .cpp?

apple touch icon@2

Estoy comenzando un nuevo proyecto de C ++ y comencé a buscar lo último en estilo C ++. Terminé aquí con respecto a la denominación de archivos y pensé que compartiría cómo se me ocurrió mi elección. Aquí va:

Stroustrup ve esto más como una consideración comercial que técnica.

Siguiendo su consejo, veamos qué esperan las cadenas de herramientas.

Para UNIX / Linux, puede interpretar que las siguientes reglas de creación de GNU predeterminadas favorecen el sufijo del nombre de archivo .cc, ya que las reglas .cpp y .C son solo alias:

$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)

(Nota: no hay un alias de COMPILE.cxx predeterminado)

Entonces, si está apuntando a UNIX / Linux, tanto .cc como .cpp son muy buenas opciones.

Al apuntar a Windows, busca problemas con .C, ya que su sistema de archivos no distingue entre mayúsculas y minúsculas. Y puede ser importante que tenga en cuenta que Visual Studio favorece el sufijo .cpp

Al apuntar a macOS, tenga en cuenta que Xcode prefiere .cpp / .hpp (recién verificado en Xcode 10.1). Siempre puede cambiar la plantilla de encabezado para usar .h.

Por lo que vale, también puede basar su decisión en las bases de código que desee. Google usa .cc y LLVM libc ++ usa .cpp, por ejemplo.

¿Qué pasa con los archivos de encabezado? Se compilan en el contexto de un archivo C o C ++, por lo que no hay necesidad de un compilador o sistema de compilación para distinguir .h de .hpp. Sin embargo, el resaltado de sintaxis y la sangría automática por parte de su editor / IDE pueden ser un problema, pero esto se soluciona asociando todos los archivos .h a un modo C ++. Como ejemplo, mi configuración de emacs en Linux carga todos los archivos .h en modo C ++ y edita bien los encabezados de C. Más allá de eso, al mezclar C y C ++, puede seguir esto Consejo.

Mi conclusión personal: .cpp / .h es el camino de menor resistencia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Java – Método String equals ()

5EGFaoQ5eNfVHdqJTkHiuV 1200 80

Evoluciones de Pokémon Sword and Shield Dusk Stone: cómo evolucionar Lampent y Doublade