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.

Author: Jessica, 2009-10-09

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.

 543
Author: JaredPar, 2015-03-14 19:03:09

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

 217
Author: Clifford, 2015-10-11 10:48:23

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.

 143
Author: John S., 2017-03-31 15:24:43

.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.

Embora o compilador não se importe com o que fazes, é uma preferência pessoal.
 60
Author: Ryu, 2017-04-17 14:25:15

Eu uso pessoalmente .cc extensão para ficheiros de implementação, .hh para cabeçalhos e .inl para modelos incorporados.

Como disse antes, é principalmente uma questão de gosto.

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:

 26
Author: Aurélien Vallée, 2009-10-16 10:06:39

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++.

 15
Author: 2 revs, 2 users 89%user181548, 2015-10-11 10:51:05
Basta seguir A Convenção que está a ser usada por projecto / equipa.
 10
Author: Ben S, 2009-10-09 17:26:19

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.

 9
Author: FigBug, 2015-10-11 10:53:36
Pessoalmente, nunca vi nenhum projecto em que tenha trabalhado, mas em termos técnicos, o compilador não se importa. Quem vai se importar com os desenvolvedores trabalhando em sua fonte, então minha regra é ir com o que sua equipe está confortável com. Se sua "equipe" é a comunidade de código aberto, vá com algo muito comum, do qual .cpp parece ser o favorito.
 8
Author: Toji, 2015-10-11 10:51:36
Várias pessoas a dizer que não significa nada? Talvez. C++ começou a vida como "C com Classes".

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.

 8
Author: Ben Voigt, 2015-10-11 10:53:02
Como na maioria das Convenções de estilo, só há duas coisas que importam:
  1. seja consistente no que usa, sempre que possível.
  2. não desenhes nada que dependa de uma escolha específica ser usada.
Estes podem parecer contraditórios, mas cada um tem valor pelas suas próprias razões.
 6
Author: Alan, 2009-10-09 17:53:41

.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.

Pessoalmente, porque sim... significa "C + Plus". É, naturalmente, de importância vital que as extensões de ficheiros sejam acrónimos, mas se esta lógica se revelar insuficientemente convincente outras coisas importantes não são o uso da chave shift (Que regras fora {[[0]} e .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.
 6
Author: please delete me, 2009-10-09 18:04:41
Tenho Uso .C and .h para o código e cabeçalho, respectivamente. Uma coisa boa com essa escolha é que, na linha de comando, é fácil de usar *.[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:)
 6
Author: KeithB, 2009-10-09 19:58:42
Não importa qual dessas extensões usarias. Escolhe o que quiseres mais, mas sê consistente com o nome. A única exceção que tenho conhecimento com esta convenção de nomes é que eu não poderia fazer {[[0]} (ou é WDK agora?) to compile .cc files. No Linux, embora isso não seja um problema.
 6
Author: Dmitry, 2015-10-11 10:54:27

Cpp = C + plus e, portanto, é o meu preferido, o que significa cc ou cxx?

 5
Author: Andrew, 2009-10-09 17:28:06

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.
 4
Author: Kyle, 2017-05-30 08:53:55