Ficheiro de código C++ extension?.cc vs.cpp
vi o código C++ gravado como ficheiros .cc
e .cpp
. Há alguma diferença entre os dois?
O Guia de estilo do Google parece sugerir {[[0]}, mas não dá nenhuma explicação.
estou principalmente preocupado com programas em sistemas Linux.
16 answers
No final do dia não importa porque os compiladores de C++ podem lidar com os ficheiros em qualquer formato. Se é um problema real dentro da sua equipa, atire uma moeda ao ar e passe para o trabalho real.
A GNU GCC reconhece tudo o que se segue como ficheiros C++, e irá usar a compilação C++, independentemente de a invocar através do gcc ou g++: .C
, .cc
, .cpp
, .CPP
, .c++
, .cp
, ou .cxx
.
Note que .C
- case matters in GCC, .c
is a C file whereas .C
is a C++ file (if you let the compiler decides what it is compiling that is).
O GCC também suporta outros sufixos para indicar um tratamento especial, como por exemplo um ficheiro .ii
será compilado como C++, mas não pré-transformados (destinados a códigos pré-transformados separadamente). Todos os sufixos reconhecidos são detalhados em gcc.gnu.org
Grande Conselho sobre o que usar para o makefile e outras ferramentas, considerando não-compilador ferramentas ao decidir em que Extensão usar é uma grande abordagem para ajudar a encontrar uma resposta que funciona para você.
Só queria adicionar o seguinte para ajudar com algumas informações {[[0]} vs .cpp
que encontrei. As seguintes extensões são divididas por diferentes ambientes (do livro" C++ Primer Plus"):
O Unix usa: .C
, .cc
, .cxx
, .c
O GNU C++ usa: .C
, .cc
, .cxx
, .cpp
, .c++
A Digital Mars usa: .cpp
, .cxx
Borland C++ usa: .cpp
Utilização da Watcom: .cpp
O Microsoft Visual C++ usa: .cpp
, .cxx
, .cc
Metrowerks CodeWarrior usa: .cpp
, .cp
, .cc
, .cxx
, .c++
Os diferentes ambientes suportam diferentes extensões. Eu também estava olhando para responder a esta pergunta e encontrou este post. Com base neste post, eu acho que eu poderia ir com .hpp
e .cpp
para a facilidade de reconhecimento transversal de plataformas / ferramentas.
.cpp
é a extensão recomendada para C++, tanto quanto sei. Algumas pessoas até recomendam o uso de .hpp
para cabeçalhos C++, apenas para diferenciar de C.
Eu uso pessoalmente .cc
extensão para ficheiros de implementação, .hh
para cabeçalhos e .inl
para modelos incorporados.
pelo que vi, .cc
parece ser mais " open source projects oriented ", como é recomendado em alguns grandes estilos de código de software de código aberto, enquanto que .Parece ser mais Windowish.
- - - editar
Como mencionado, isto é "do que eu vi" , é pode estar errado.
É que todos os projetos Windows em que trabalhei usam .cpp
, e muitos projetos de código aberto (que são principalmente em Unix-likes) usam .cc
.
Exemplos a codificar estilos usando .cc
:
Outras extensões de ficheiros utilizadas incluem .cxx
e .C
(capital c). Acho que o Bjarne Stroustrup usou o .C
originalmente. .cpp
é o nome do pré-processador C, por isso é lamentável que também tenha sido usado para C++.
A outra opção é .cxx
onde o x
é suposto ser um mais girado 45°.
O Windows, o Mac e o Linux suportam todos .c++
por isso devíamos usar isso.
.cpp
parece ser o favorito.
True that .cc
and .cpp
are also command names on most Unix systems (c compiler and c preprocessor respectively).
Uso {[[2]} exclusivamente, mas comecei pelo Windows. .cc
é mais uma convenção Unix, embora eu a veja cada vez menos lá. GNU make tem regras para .cpp
então isso provavelmente é preferido, ele vai funcionar por padrão em ambas as janelas e tudo 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 projectos usam .h
para ficheiros de cabeçalho, e suportam tanto quanto possível C E C++ através de extern "C"
e testando __cplusplus
.
- seja consistente no que usa, sempre que possível.
- não desenhes nada que dependa de uma escolha específica ser usada.
.C
e .cc
parece ser padrão para os (poucos) programas C++ orientados ao Unix que eu vi. Eu sempre me usei {[[2]}, desde que eu só realmente trabalho em janelas e que tem sido o padrão desde sempre.
.c++
) e evitar a expressão regular metacaracters sempre que possível (o que exclui {[[5]} -- infelizmente você não pode realmente evitar o .
claro.).
Isto não exclui nada, por isso mesmo que não signifique nada (ou significa?) é provavelmente uma boa escolha para o código orientado para Linux.
*.[Ch]
para selecionar todos os arquivos de código. A utilização de .C
pode ser um problema nos sistemas de ficheiros sem distinção de maiúsculas, mas se tiver foo.c
e foo.C
na mesma pasta, você merece o que recebe à mesma:)
WDK
agora?) to compile .cc
files. No Linux, embora isso não seja um problema.
Cpp = C + plus e, portanto, é o meu preferido, o que significa cc ou cxx?
A extensão .cc é necessária para a utilização de regras implícitas nos ficheiros makefiles. Olhe através destes links para obter uma melhor compreensão dos makefiles, mas olhe principalmente o segundo, como 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 disto agora.