Saya menjawab ini sebagai pengingat, untuk memberikan komentar saya pada "user1949346" jawaban untuk OP yang sama ini.
Jadi, seperti yang sudah dijawab oleh banyak orang: cara apa pun baik-baik saja. Diikuti oleh penekanan pada kesan mereka sendiri.
Pendahuluan, seperti juga dalam komentar yang disebutkan sebelumnya disebutkan, pendapat saya adalah C++
ekstensi tajuk diusulkan untuk menjadi .h
jika sebenarnya tidak ada alasan menentangnya.
Karena dokumen ISO / IEC menggunakan notasi file header ini dan tidak ada string yang cocok .hpp
bahkan terjadi dalam dokumentasi bahasa merekaC++
.
Tapi saya sekarang bertujuan untuk alasan yang bisa diterima. MENGAPA bagaimanapun juga tidak masalah, dan terutama mengapa itu bukan masalah bahasa itu sendiri.
Jadi di sini kita mulai.
The C++
dokumentasi (aku benar-benar mengambil referensi dari versi N3690) mendefinisikan bahwa header harus sesuai dengan sintaks berikut:
2.9 Nama judul
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 "
Jadi saat kita dapat mengekstrak dari bagian ini, nama file header mungkin adalah apa pun yang valid dalam kode sumber juga. Kecuali berisi '\n'
karakter dan tergantung pada apakah itu akan dimasukkan oleh <>
itu tidak diperbolehkan mengandung a >
. Atau cara lain jika disertakan oleh ""
-sertakan itu tidak diizinkan mengandung a "
.
Dengan kata lain: jika Anda memiliki lingkungan yang mendukung nama file seperti prettyStupidIdea.>
, sertakan seperti:
#include "prettyStupidIdea.>"
akan valid, tetapi:
#include <prettyStupidIdea.>>
akan menjadi tidak valid. Sebaliknya sama saja.
Dan bahkan
#include <<.<>
akan menjadi nama file header disertakan yang valid.
Bahkan ini akan sesuai C++
, itu akan menjadi ide yang sangat bodoh, tho.
Dan itu sebabnya .hpp
juga berlaku.
Tapi itu bukan hasil dari komite yang merancang keputusan untuk bahasa tersebut!
Jadi membahas tentang menggunakan .hpp
sama dengan melakukannya .cc
, .mm
atau apa pun yang saya baca di posting lain tentang topik ini.
Saya harus mengakui bahwa saya tidak tahu dari mana .hpp
asalnya 1 , tetapi saya berani bertaruh penemu alat parsing, IDE atau hal lain yang berkaitan dengan C++
ide ini untuk mengoptimalkan beberapa proses internal atau hanya untuk menciptakan beberapa (mungkin bahkan untuk mereka tentu perlu ) konvensi penamaan baru.
Tetapi ini bukan bagian dari bahasa.
Dan setiap kali seseorang memutuskan untuk menggunakannya dengan cara ini. Mungkin itu karena dia suka sebagian besar atau karena beberapa aplikasi alur kerja memerlukannya, tidak pernah 2 merupakan persyaratan bahasa. Jadi siapa pun yang mengatakan "pp adalah karena digunakan dengan C ++", tentu saja salah dalam hal definisi bahasa.
C ++ memungkinkan apa pun yang menghormati paragraf sebelumnya. Dan jika ada sesuatu yang diusulkan komite untuk digunakan, maka itu digunakan .h
karena ini adalah ekstensi yang dituntut dalam semua contoh dokumen ISO.
Kesimpulan:
Selama Anda tidak melihat / merasa perlu menggunakan .h
lebih .hpp
atau sebaliknya, Anda tidak perlu repot-repot. Karena keduanya akan membentuk nama header yang valid dengan kualitas yang sama sehubungan dengan standar. Dan oleh karena itu segala sesuatu yang MEMBUTUHKAN Anda untuk menggunakan .h
atau .hpp
merupakan batasan tambahan dari standar yang bahkan dapat bertentangan dengan pembatasan tambahan lainnya yang tidak sesuai satu sama lain. Tetapi karena OP tidak menyebutkan batasan bahasa tambahan, ini adalah satu-satunya jawaban yang benar dan dapat disetujui untuk pertanyaan itu
" * .h atau * .hpp untuk definisi kelas Anda " adalah:
Keduanya sama-sama benar dan berlaku selama tidak ada batasan eksternal.
1 Dari apa yang saya tahu, tampaknya, kerangka kerja dorongan yang muncul dengan .hpp
ekstensi itu.
2 Tentu saja saya tidak bisa mengatakan apa yang akan dibawa oleh versi yang akan datang!