Estou respondendo a isso como um lembrete, para citar meus comentários sobre a resposta "user1949346" desse mesmo OP.
Então, como muitos já responderam: de qualquer maneira está bem. Seguido por enfatiza suas próprias impressões.
Introdutório, como também nos comentários nomeados anteriores declarados, minha opinião é que as C++
extensões de cabeçalho são propostas, .h
caso não haja realmente nenhuma razão contra isso.
Como os documentos ISO / IEC usam essa notação de arquivos de cabeçalho e nenhuma correspondência de string .hpp
ocorre mesmo nas documentações de idiomas deles C++
.
Mas agora estou buscando uma razão aprovável PORQUE de qualquer maneira está ok, e especialmente porque não é assunto da linguagem em si.
Aqui vamos nos.
A C++
documentação (na verdade, estou tomando referência da versão N3690) define que um cabeçalho deve estar em conformidade com a seguinte sintaxe:
2.9 Nomes de cabeçalho
header-name:
< h-char-sequence >
" q-char-sequence "
h-char-sequence:
h-char
h-char-sequence h-char
h-char:
any member of the source character set except new-line and >
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
any member of the source character set except new-line and "
Portanto, como podemos extrair desta parte, o nome do arquivo de cabeçalho também pode ser válido no código-fonte. Exceto por conter '\n'
caracteres e, dependendo se ele deve ser incluído, <>
não é permitido que contenha a >
. Ou, caso contrário, se for incluído por ""
-include, não será permitido conter a "
.
Em outras palavras: se você tinha um ambiente que suporta nomes de arquivos como prettyStupidIdea.>
, inclua:
#include "prettyStupidIdea.>"
seria válido, mas:
#include <prettyStupidIdea.>>
seria inválido. O contrário é o mesmo.
E até mesmo
#include <<.<>
seria um nome de arquivo de cabeçalho inclusivo válido.
Mesmo isso seria conforme C++
, seria uma idéia muito estúpida, tho.
E é por isso que também .hpp
é válido.
Mas não é um resultado dos comitês que elaboram decisões para o idioma!
Portanto, discutir sobre o uso .hpp
é o mesmo que fazê-lo .cc
, .mm
ou o que mais eu li em outros posts sobre esse tópico.
Eu tenho que admitir que não tenho idéia de onde .hpp
veio 1 , mas eu apostaria que um inventor de alguma ferramenta de análise, IDE ou outra coisa preocupada C++
chegou a essa idéia para otimizar alguns processos internos ou apenas para inventar alguns (provavelmente mesmo para eles necessariamente ) novas convenções de nomenclatura.
Mas isso não faz parte do idioma.
E sempre que alguém decide usá-lo dessa maneira. Pode ser que ele goste mais ou porque algumas aplicações do fluxo de trabalho exijam, nunca 2 é um requisito da linguagem. Portanto, quem diz que "o pp é porque é usado com C ++" simplesmente está errado em relação à definição de linguagens.
C ++ permite qualquer coisa que respeite o parágrafo anterior. E se houver algo que o comitê se proponha a usar, ele será usado, .h
pois essa é a extensão processada em todos os exemplos do documento ISO.
Conclusão:
Contanto que você não veja / sinta nenhuma necessidade de usar .h
over .hpp
ou vice-versa, não deve se preocupar. Porque ambos formariam um nome de cabeçalho válido com a mesma qualidade em relação ao padrão. E, portanto, qualquer coisa que EXIGE que você use .h
ou .hpp
é uma restrição adicional do padrão que pode até estar em contradição com outras restrições adicionais que não estão em conformidade. Mas como o OP não menciona nenhuma restrição adicional de idioma, esta é a única resposta correta e aprovada para a pergunta
" * .h ou * .hpp para suas definições de classe " é:
Ambos são igualmente corretos e aplicáveis, desde que não haja restrições externas.
1 Pelo que sei, aparentemente, é a estrutura de impulso que surgiu com essa .hpp
extensão.
2 É claro que não posso dizer o que algumas versões futuras trarão com ele!