Я отвечаю на это как напоминание, чтобы указать на мой комментарий (я) к "user1949346" ответ на этот же ОП.
Так что многие уже ответили: в любом случае это хорошо. Далее следуют акценты своих впечатлений.
Вводный, как и в предыдущих названных комментариях, я считаю, что C++
расширение заголовков предлагается, .h
если на самом деле нет причин против этого.
Поскольку в документах ИСО / МЭК используется это обозначение файлов заголовков, и .hpp
в их языковой документации о совпадении строк даже не встречаетсяC++
.
Но сейчас я стремлюсь по приемлемой причине, ПОЧЕМУ любой путь в порядке, и особенно почему он не зависит от языка, на котором он сам.
Итак, поехали.
C++
Документация (я на самом деле принимаю ссылку от версии N3690) определяет , что заголовок должен соответствовать следующему синтаксису:
2.9 Имена заголовков
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 "
Таким образом, как мы можем извлечь из этой части, имя файла заголовка также может быть любым, допустимым в исходном коде. За исключением того, что содержит '\n'
символы и в зависимости от того, должен ли он быть включен, <>
ему не разрешено содержать >
. Или другой способ, если он включен в ""
-include, он не может содержать "
.
Другими словами: если у вас была среда, поддерживающая такие имена файлов, как prettyStupidIdea.>
include:
#include "prettyStupidIdea.>"
будет действительным, но:
#include <prettyStupidIdea.>>
будет недействительным. И наоборот.
И даже
#include <<.<>
будет допустимым включаемым именем файла заголовка.
Даже это соответствовало бы C++
, это была бы довольно глупая идея, хотя.
И поэтому .hpp
тоже действует.
Но это не результат комитетов, разрабатывающих решения для языка!
Поэтому обсуждение собирается использовать .hpp
такое же , как делает это о том .cc
, .mm
или что - либо еще , что я читал в других сообщениях на эту тему.
Я должен признать, что понятия не имею, откуда .hpp
взялся 1 , но я бы поспорил, что изобретатель какого-то инструмента синтаксического анализа, IDE или чего-то еще, связанного с этим, C++
пришел к этой идее, чтобы оптимизировать некоторые внутренние процессы или просто изобрести некоторые (возможно, даже для них обязательно ) новые соглашения об именах.
Но это не часть языка.
И всякий раз, когда кто-то решает использовать это таким образом. Может быть потому , что ему нравится не больше всего или потому , что некоторые приложения процесса требуют, он никогда 2 является требованием языка. Поэтому тот, кто говорит «pp - это потому, что он используется с C ++», просто ошибается в отношении определения языков.
C ++ позволяет все, что касается предыдущего абзаца. И если есть что-то, что комитет предложил использовать, то он использует, .h
поскольку это расширение используется во всех примерах документа ISO.
Вывод:
Пока вы не видите / не чувствуете необходимости использовать .h
сверх .hpp
или наоборот, вам не стоит беспокоиться. Потому что оба будут формировать правильное имя заголовка одинакового качества по отношению к стандарту. И поэтому все, что ТРЕБУЕТ вас использовать .h
или .hpp
является дополнительным ограничением стандарта, которое может даже противоречить другим дополнительным ограничениям, не соответствующим друг другу. Но поскольку OP не упоминает никаких дополнительных языковых ограничений, это единственный правильный и приемлемый ответ на вопрос
« * .h или * .hpp для ваших определений классов »:
И то, и другое одинаково правильно и применимо, если нет внешних ограничений.
1 Из того, что я знаю, по-видимому, это расширение Boost, которое придумало это .hpp
расширение.
2 Конечно, я не могу сказать, что принесут с собой некоторые будущие версии!