He visto el código C ++ guardado como ambos .cc
y como .cpp
archivos. ¿Hay diferencia entre los dos?
La guía de estilo de Google parece sugerir .cc
, pero no proporciona ninguna explicación.
Me interesan principalmente los programas en sistemas Linux.
lint
le importa,.C
es C ++ y.c
es C sin ningún tipo de comprensión de.cc
o.cpp
. Al menos en AIX 6.1..cc
.Respuestas:
Al final del día, no importa porque los compiladores de C ++ pueden manejar los archivos en cualquier formato. Si es un problema real dentro de su equipo, tire una moneda y continúe con el trabajo real.
fuente
GNU GCC reconoce todos los siguientes archivos como C ++, y utilizará C ++ compilación independientemente de si se invoca a través de gcc o g ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, o.cxx
.Tenga en cuenta que el
.C
caso es importante en GCC,.c
es un archivo C mientras que.C
es un archivo C ++ (si deja que el compilador decida qué está compilando).GCC también admite otros sufijos para indicar un manejo especial, por ejemplo, un
.ii
archivo se compilará como C ++, pero no se procesará previamente (destinado a código preprocesado por separado). Todos los sufijos reconocidos se detallan en gcc.gnu.orgfuente
Un gran consejo sobre qué usar para el archivo MAKE y otras herramientas, teniendo en cuenta las herramientas que no son compiladoras mientras decide qué extensión usar es un gran enfoque para ayudarlo a encontrar una respuesta que funcione para usted.
Solo quería agregar lo siguiente para ayudar con la información
.cc
vs.cpp
que encontré. Las siguientes son extensiones desglosadas por diferentes entornos (del libro "C ++ Primer Plus"):Unix: usos
.C
,.cc
,.cxx
,.c
C de GNU utiliza ++:
.C
,.cc
,.cxx
,.cpp
,.c++
Marte usos digitales:
.cpp
,.cxx
Borland C ++ utiliza:
.cpp
Watcom utiliza:
.cpp
Microsoft Visual C ++: usos
.cpp
,.cxx
,.cc
Metrowerks CodeWarrior usos:
.cpp
,.cp
,.cc
,.cxx
,.c++
Los diferentes entornos admiten diferentes extensiones. Yo también estaba buscando responder esta pregunta y encontré esta publicación. Basado en esta publicación, creo que podría ir con
.hpp
y.cpp
para facilitar el reconocimiento multiplataforma / herramienta cruzada.fuente
.cpp
?.cpp
para archivos fuente C ++. (La respuesta citada señala que "cpp" es la abreviatura del preprocesador C)..cpp
es la extensión recomendada para C ++ hasta donde yo sé. Algunas personas incluso recomiendan usar.hpp
para encabezados C ++, solo para diferenciarse de C.Aunque al compilador no le importa lo que haces, es una preferencia personal.
fuente
Personalmente uso la
.cc
extensión para archivos de implementación,.hh
encabezados y.inl
en línea / plantillas.Como se dijo antes, es principalmente una cuestión de gustos.
Por lo que he visto ,
.cc
parece ser más " orientado a proyectos de código abierto ", como se recomienda en algunos excelentes estilos de codificación de software de código abierto.cpp
Parece ser más Windowish.--- EDITAR
Como se mencionó, esto es "por lo que he visto" , puede estar equivocado. Es solo que todos los proyectos de Windows en los que he trabajado usaron
.cpp
, y muchos proyectos de código abierto (que están principalmente en me gusta de Unix).cc
.Ejemplos de estilos de codificación utilizando
.cc
:fuente
-*- C++ -*-
etiqueta en los encabezados llvm.org/docs/CodingStandards.html ; Mozilla Coding Style sugiere .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; KDE parece estar usando .cpp / .h too quickgit.kde.orgOtras extensiones de archivo utilizadas incluyen
.cxx
y.C
(mayúscula C). Creo que Bjarne Stroustrup usó.C
originalmente..cpp
es el nombre del preprocesador C, por lo que es lamentable que también se haya utilizado para C ++.fuente
La otra opción es
.cxx
dondex
se supone que es un plus girado 45 °.Windows, Mac y Linux son compatibles,
.c++
por lo que deberíamos usar eso.fuente
Varias personas diciendo
.cc
no significan nada? Que podría. C ++ comenzó su vida como "C con clases".Es cierto que
.cc
y.cpp
son también los nombres de comandos en la mayoría de los sistemas Unix (compilador de C y C preprocesador respectivamente).Lo uso
.cpp
exclusivamente, pero comencé en Windows..cc
es más una convención de Unix, aunque lo veo cada vez menos allí. GNU make tiene reglas para.cpp
lo que probablemente sea preferible, funcionará de manera predeterminada tanto en Windows como en todo lo demás. Por otro lado, C ++ moderno no usa ninguna extensión para los encabezados, realmente no me gusta eso. Todos mis proyectos se utilizan.h
para archivos de encabezado, y admiten tanto C como C ++ tanto como sea posible a través deextern "C"
y pruebas__cplusplus
.fuente
Simplemente siga la convención utilizada por el proyecto / equipo.
fuente
Yo personalmente nunca he visto
.cc
en ningún proyecto en el que haya trabajado, pero en todos los aspectos técnicos al compilador no le importará.A quién le importarán los desarrolladores que trabajen en su fuente, por lo que mi regla general es elegir con qué se siente cómodo su equipo. Si su "equipo" es la comunidad de código abierto, elija algo muy común, que
.cpp
parece ser el favorito.fuente
.cc
como una extensión de archivo para archivos de implementación C ++Como con la mayoría de las convenciones de estilo, solo hay dos cosas importantes:
Puede parecer que contradicen, pero cada uno tiene valor por sus propios motivos.
fuente
.C
y.cc
parece ser estándar para los (pocos) programas C ++ orientados a Unix que he visto. Siempre me he usado.cpp
, ya que realmente solo trabajo en Windows y ese ha sido el estándar allí desde siempre.Lo recomiendo
.cpp
personalmente, porque ... significa "C Plus Plus". Por supuesto, es de vital importancia que las extensiones de archivo sean acrónimos, pero si este razonamiento resulta insuficientemente convincente, otras cosas importantes son el no uso de la tecla Mayús (que excluye.C
y.c++
) y la evitación de metacaracteres de expresión regular cuando sea posible (que descarta.c++
) desafortunadamente no puedes evitar el.
por supuesto).Esto no descarta
.cc
, por lo que, aunque en realidad no representa nada (¿o sí?), Probablemente sea una buena opción para el código orientado a Linux.fuente
He usado .C y .h para fuente y encabezado, respectivamente. Una buena cosa con esa elección es que, en la línea de comandos, es fácil de usar
*.[Ch]
para seleccionar todos los archivos de código. El uso.C
podría ser un problema en los sistemas de archivos que no distinguen entre mayúsculas y minúsculas, pero si tienefoo.c
yfoo.C
en el mismo directorio, se merece lo que obtiene de todos modos :)fuente
La extensión .cc es necesaria para usar reglas implícitas dentro de los archivos MAKE. Mire a través de estos enlaces para obtener una mejor comprensión de los archivos MAKE, pero busque principalmente el segundo, ya que claramente dice la utilidad de la extensión .cc:
ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html
https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html
Acabo de enterarme de esto ahora.
fuente
.cpp
archivos. Sin preocupaciones ! :-).C
puede ser problemático en sistemas con sistemas de archivos que no distinguen entre mayúsculas y minúsculas. No creo que haya ninguna ventaja particular, en lo quemake
respecta, en el uso de.cc
over.cpp
, por ejemplo. Los Makefiles funcionan bien con.cpp
archivos fuente C ++.No importa cuál de esas extensiones usarías. Elija el que más le guste, solo sea coherente con los nombres. La única excepción que conozco con esta convención de nomenclatura es que no pude hacer
WinDDK
(¿o esWDK
ahora?) Para compilar.cc
archivos. En Linux, aunque eso no es un problema.fuente
Estoy comenzando un nuevo proyecto 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, verifiquemos qué esperan las cadenas de herramientas.
Para UNIX / Linux, puede interpretar las siguientes reglas predeterminadas de creación de GNU que favorecen el sufijo de nombre de archivo .cc, ya que las reglas .cpp y .C son solo alias:
(Nota: no hay un alias COMPILE.cxx predeterminado)
Entonces, si está apuntando a UNIX / Linux, tanto .cc como .cpp son muy buenas opciones.
Al apuntar a Windows, está buscando 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 compilar o compilar el sistema para distinguir .h de .hpp. Sin embargo, el resaltado de sintaxis y la sangría automática 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 los encabezados C muy bien. Más allá de eso, al mezclar C y C ++, puede seguir este consejo .
fuente
Como otros escribieron antes que yo, al final es lo que está utilizando su proyecto / equipo / empresa.
Personalmente, no estoy usando
cc
extensión, estoy tratando de reducir el número de extensiones y no aumentarlas, a menos que haya un valor claro (en mi opinión).Por lo que vale, esto es lo que estoy usando :
c
- Solo código C puro, sin clases o estructuras con métodos.cpp
- código C ++hpp
- Código de solo encabezados. Las implementaciones están en los encabezados (como las clases de plantilla)h
- archivos de encabezado para C / C ++. Estoy de acuerdo en que se puede hacer otra distinción, pero como escribí, estoy tratando de reducir el número de extensiones para simplificar. Al menos de los proyectos de C ++ en los que he trabajado, losh
archivos para pure-C son más raros, por lo tanto, no quería agregar otra extensión.fuente