Eu vi o código C ++ salvo como arquivos .cc
e .cpp
. Existe alguma diferença entre os dois?
O guia de estilo do Google parece sugerir .cc
, mas não fornece explicações.
Estou preocupado principalmente com programas em sistemas Linux.
Eu vi o código C ++ salvo como arquivos .cc
e .cpp
. Existe alguma diferença entre os dois?
O guia de estilo do Google parece sugerir .cc
, mas não fornece explicações.
Estou preocupado principalmente com programas em sistemas Linux.
lint
se importa,.C
é C ++ e.c
é C sem nenhuma compreensão de.cc
ou.cpp
. Pelo menos no AIX 6.1..cc
.Respostas:
No final do dia, não importa, porque os compiladores C ++ podem lidar com os arquivos em qualquer formato. Se for um problema real dentro da sua equipe, jogue uma moeda e prossiga para o trabalho real.
fonte
GNU GCC reconhece todos os seguintes como arquivos C ++, e vai usar C ++ compilação independentemente de você invocá-lo através gcc ou g ++:
.C
,.cc
,.cpp
,.CPP
,.c++
,.cp
, ou.cxx
.Observe que o
.C
caso - importa no GCC,.c
é um arquivo C, enquanto que.C
é um arquivo C ++ (se você deixar o compilador decidir o que está compilando).O GCC também suporta outros sufixos para indicar tratamento especial, por exemplo, um
.ii
arquivo será compilado como C ++, mas não pré-processado (destinado ao código pré-processado separadamente). Todos os sufixos reconhecidos estão detalhados em gcc.gnu.orgfonte
Um ótimo conselho sobre o qual usar para o makefile e outras ferramentas, considerando as ferramentas que não são do compilador ao decidir sobre qual extensão usar, é uma ótima abordagem para ajudar a encontrar uma resposta que funcione para você.
Eu só queria adicionar o seguinte para ajudar com algumas informações
.cc
vs.cpp
que encontrei. A seguir, são apresentadas extensões discriminadas por diferentes ambientes (do livro "C ++ Primer Plus"):Unix usos:
.C
,.cc
,.cxx
,.c
GNU usos C ++:
.C
,.cc
,.cxx
,.cpp
,.c++
Usos Marte Digital:
.cpp
,.cxx
O Borland C ++ usa:
.cpp
A Watcom usa:
.cpp
Visual C ++ usa o Microsoft:
.cpp
,.cxx
,.cc
Metrowerks CodeWarrior usos:
.cpp
,.cp
,.cc
,.cxx
,.c++
Os diferentes ambientes suportam extensões diferentes. Eu também estava olhando para responder a esta pergunta e encontrei este post. Com base nesta postagem, acho que posso ir com
.hpp
e.cpp
para facilitar o reconhecimento de plataforma cruzada / ferramenta cruzada.fonte
.cpp
?.cpp
para arquivos de origem C ++. (A resposta citada observa que "cpp" é a abreviação do pré-processador C.).cpp
é a extensão recomendada para C ++, tanto quanto eu sei. Algumas pessoas até recomendam o uso.hpp
de cabeçalhos C ++, apenas para diferenciar C.Embora o compilador não se importe com o que você faz, é uma preferência pessoal.
fonte
Eu pessoalmente uso a
.cc
extensão para arquivos de implementação,.hh
para cabeçalhos e.inl
para inline / modelos.Como dito anteriormente, é principalmente uma questão de gosto.
Pelo que vi ,
.cc
parece ser mais " orientado a projetos de código aberto ", como é recomendado em alguns grandes estilos de codificação de software de código aberto.cpp
parece ser mais janelas.--- EDITAR
Como mencionado, isso é "pelo que eu vi" , pode estar errado. É que todos os projetos do Windows em que trabalhei usaram
.cpp
e muitos projetos de código aberto (que são principalmente do tipo unix) são usados.cc
.Exemplos de estilos de codificação usando
.cc
:fonte
-*- C++ -*-
tags nos cabeçalhos llvm.org/docs/CodingStandards.html ; O Estilo de Codificação Mozilla sugere .cpp / .h developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/… ; O KDE parece estar usando .cpp / .h too quickgit.kde.orgOutras extensões de arquivo usadas incluem
.cxx
e.C
(C maiúsculo). Acredito que Bjarne Stroustrup usou.C
originalmente..cpp
é o nome do pré-processador C, portanto, é lamentável que ele tenha sido usado também para C ++.fonte
A outra opção é
.cxx
ondex
é suposto que seja um 45 ° girado mais.Windows, Mac e Linux suportam,
.c++
então devemos usá-lo.fonte
Várias pessoas dizendo
.cc
não significam nada? Poderia. C ++ começou a vida como "C com classes".Verdade que
.cc
e.cpp
são também nomes de comandos na maioria dos sistemas Unix (compilador C e C pré-processador, respectivamente).Uso
.cpp
exclusivamente, mas iniciei no Windows..cc
é mais uma convenção do Unix, embora eu a veja cada vez menos. O GNU make possui regras para.cpp
que, provavelmente, seja o preferido, ele funcionará por padrão no Windows e em todo o resto. Por outro lado, o C ++ moderno não usa nenhuma extensão para cabeçalhos, eu realmente não gosto disso. Todos os meus projetos usam.h
arquivos de cabeçalho e suportam tanto C quanto C ++, tanto quanto possível, viaextern "C"
testes__cplusplus
.fonte
Basta seguir a convenção usada pelo projeto / equipe.
fonte
Eu pessoalmente nunca vi
.cc
nenhum projeto em que trabalhei, mas com toda a tecnicidade o compilador não se importa.Quem se importará com os desenvolvedores que trabalham na sua fonte, portanto, minha regra geral é seguir com o que sua equipe está confortável. Se sua "equipe" é a comunidade de código aberto, escolha algo muito comum, do qual
.cpp
parece ser o favorito.fonte
.cc
como uma extensão de arquivo für arquivos de implementação C ++Como na maioria das convenções de estilo, existem apenas duas coisas importantes:
Isso pode parecer contraditório, mas cada um deles tem valor por suas próprias razões.
fonte
.C
e.cc
parece ser o padrão para os (poucos) programas C ++ orientados a Unix que eu já vi. Eu sempre.cpp
me usei , já que realmente só trabalho no Windows e esse tem sido o padrão lá desde sempre.Eu recomendo
.cpp
pessoalmente, porque ... significa "C Plus Plus". É claro que é de vital importância que as extensões de arquivo sejam siglas, mas se essa justificativa se provar insuficientemente convincente, outras coisas importantes são o não uso da tecla shift (que exclui.C
e.c++
) e a prevenção de metacaracteres de expressão regular sempre que possível (que exclui.c++
- infelizmente você não pode realmente evitar o.
curso.).Isso não descarta
.cc
, portanto, mesmo que realmente não represente nada (ou não?), É provavelmente uma boa opção para código orientado ao Linux.fonte
Eu usei .C e .h para fonte e cabeçalho, respectivamente. Uma coisa legal dessa escolha é que, na linha de comando, é fácil usar
*.[Ch]
para selecionar todos os arquivos de código. O uso.C
pode ser um problema em sistemas de arquivos que não diferenciam maiúsculas de minúsculas, mas se você tiverfoo.c
efoo.C
no mesmo diretório, você merece o que recebe de qualquer maneira :)fonte
A extensão .cc é necessária para o uso de regras implícitas nos makefiles. Examine esses links para entender melhor os makefiles, mas observe principalmente o segundo, pois ele diz claramente a utilidade da extensão .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
Acabei de saber disso agora.
fonte
.cpp
arquivos. Não se preocupe ! :-).C
pode ser problemático em sistemas com sistemas de arquivos que não diferenciam maiúsculas de minúsculas. Eu não acho que exista qualquer vantagem em particular, no que dizmake
respeito ao uso.cc
excessivo.cpp
, por exemplo. Makefiles funcionam bem com.cpp
arquivos de origem C ++.Não importa qual dessas extensões você usaria. Escolha o que você mais gosta, apenas seja consistente com a nomeação. A única exceção que conheço com esta convenção de nomenclatura é que eu não poderia fazer
WinDDK
(ou éWDK
agora?) Para compilar.cc
arquivos. No Linux, isso dificilmente é um problema.fonte
Estou iniciando um novo projeto C ++ e comecei a procurar as mais recentes no estilo C ++. Acabei aqui com relação à nomeação de arquivos e pensei em compartilhar como fiz minha escolha. Aqui vai:
Stroustrup vê isso mais como uma consideração comercial do que técnica .
Seguindo seus conselhos, vamos verificar o que as cadeias de ferramentas esperam.
Para UNIX / Linux, você pode interpretar as seguintes regras padrão do GNU make como favorecendo o sufixo .cc, pois as regras .cpp e .C são apenas aliases:
(Nota: não há alias COMPILE.cxx padrão)
Portanto, se você estiver direcionado ao UNIX / Linux, .cc e .cpp são opções muito boas.
Ao segmentar o Windows, você está procurando problemas com o .C, pois o sistema de arquivos não diferencia maiúsculas de minúsculas. E pode ser importante observar que o Visual Studio favorece o sufixo .cpp
Ao segmentar o macOS, observe que o Xcode prefere .cpp / .hpp (apenas verificado no Xcode 10.1). Você sempre pode alterar o modelo de cabeçalho para usar .h.
Pelo que vale a pena, você também pode basear sua decisão nas bases de código que desejar. O Google usa .cc e o LLVM libc ++ usa .cpp, por exemplo.
E os arquivos de cabeçalho? Eles são compilados no contexto de um arquivo C ou C ++, portanto, não há nenhum sistema de compilação ou compilação necessário para distinguir .h de .hpp. O destaque da sintaxe e o recuo automático do editor / IDE podem ser um problema, no entanto, mas isso é corrigido ao associar todos os arquivos .h ao modo C ++. Como exemplo, minha configuração do emacs no Linux carrega todos os arquivos .h no modo C ++ e edita os cabeçalhos em C. Além disso, ao misturar C e C ++, você pode seguir este conselho .
fonte
Como outros escreveram antes de mim, no final é o que está sendo usado pelo seu projeto / equipe / empresa.
Pessoalmente, não estou usando
cc
extensão, estou tentando diminuir o número de extensões e não aumentá-las, a menos que haja um valor claro (na minha opinião).Para que vale a pena, é isso que estou usando :
c
- Somente código C puro, sem classes ou estruturas com métodos.cpp
- código C ++hpp
- Código apenas de cabeçalhos. As implementações estão nos cabeçalhos (como as classes de modelo)h
- arquivos de cabeçalho para C / C ++. Concordo que outra distinção pode ser feita, mas, como escrevi, estou tentando diminuir o número de extensões para simplificar. Pelo menos nos projetos em C ++ em que trabalhei, osh
arquivos para C puro são mais raros; portanto, não queria adicionar outra extensão.fonte