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:
$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)
(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 .
Minha conclusão pessoal : .cpp / .h é o caminho de menor resistência.