Я відповідаю на це як нагадування, щоб вказати на мій коментар (и) на відповідь "user1949346" на цю ж ОП.
Тому багато хто вже відповів: будь-який спосіб - це добре. Слідом наголошують на власних враженнях.
Вступний, як і в попередніх названих коментарях, на мою думку, пропонується C++
розширення заголовка, .h
якщо насправді немає причин проти цього.
Оскільки документи ISO / IEC використовують це позначення файлів заголовків, і жодне узгодження рядків .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'
символи, і залежно від того, чи потрібно його включити, <>
не можна містити >
. Або в інший спосіб, якщо він включений через ""
-включити його не дозволяється містити "
.
Іншими словами: якщо у вас було середовище, яке підтримує назви файлів типу prettyStupidIdea.>
, включайте такі:
#include "prettyStupidIdea.>"
буде дійсним, але:
#include <prettyStupidIdea.>>
було б недійсним. Інакше навпаки.
І навіть
#include <<.<>
буде дійсним ім'ям файлу заголовка, що можна включити.
Навіть це відповідало б C++
, це було б досить дурною ідеєю, тхо.
І тому .hpp
справедливий теж.
Але це не результат комітетів, які розробляють рішення для мови!
Тому обговорювати питання про використання .hpp
- це те саме, що робити .cc
, .mm
або що я ще читав в інших публікаціях на цю тему.
Я мушу визнати, що я не маю поняття, звідки .hpp
прийшов 1 , але я б став би на те, що винахідник якогось інструменту розбору, IDE або чогось іншого, що стосується, C++
прийшов до цієї ідеї, щоб оптимізувати деякі внутрішні процеси або просто винайти деякі (можливо, навіть для них обов'язково ) нові угоди про іменування.
Але це не частина мови.
І кожного разу, коли хтось вирішить використовувати це таким чином. Це може бути тому, що йому це найбільше подобається, або тому, що цього вимагають деякі програми робочого процесу, це ніколи 2 не є вимогою мови. Отже, хто каже "пп тому, що він використовується з C ++", просто помиляється щодо визначення мов.
C ++ дозволяє все, що стосується попереднього абзацу. І якщо є що-небудь, що комітет запропонував використати, то він використовує, .h
оскільки це розширення, яке подається у всіх прикладах документа ISO.
Висновок:
Поки ви не бачите / не відчуваєте жодної потреби користуватися .h
над .hpp
або навпаки, не варто турбуватися. Тому що обидва будуть формувати дійсне ім'я заголовка однакової якості стосовно стандарту. А отже, все, що ПОТРІБНО Вам використовувати .h
або .hpp
є додатковим обмеженням стандарту, яке навіть може суперечити іншим додатковим обмеженням, невідповідним один одному. Але оскільки ОП не згадує жодних додаткових мовних обмежень, це єдиний правильний і прийнятний відповідь на питання
" * .h або * .hpp для визначень вашого класу ":
Обидва є однаково правильними та застосовними, доки немає зовнішніх обмежень.
1 З того, що мені відомо, мабуть, саме .hpp
розширювальна рамка придумала це розширення.
2 Звичайно, я не можу сказати, що принесуть деякі майбутні версії!