Tôi đang trả lời câu hỏi này như một lời nhắc nhở, để đưa ra nhận xét cho (các) nhận xét của tôi về câu trả lời "user1949346" cho cùng OP này.
Vì vậy, như nhiều người đã trả lời: một trong hai cách là tốt. Tiếp theo là nhấn mạnh ấn tượng riêng của họ.
Giới thiệu, cũng như trong các bình luận có tên trước đó đã nêu, ý kiến của tôi là C++
phần mở rộng tiêu đề được đề xuất là .h
nếu thực sự không có lý do nào chống lại nó.
Vì các tài liệu ISO / IEC sử dụng ký hiệu này của các tệp tiêu đề và không có chuỗi nào khớp với .hpp
thậm chí xảy ra trong các tài liệu ngôn ngữ của chúng C++
.
Nhưng bây giờ tôi đang nhắm đến một lý do có thể chấp nhận TẠI SAO dù cách nào cũng được, và đặc biệt là tại sao nó không phải là chủ đề của ngôn ngữ.
Vì vậy, ở đây chúng tôi đi.
Các C++
tài liệu (Tôi đang thực sự tham gia tài liệu tham khảo từ phiên bản N3690) định nghĩa rằng một tiêu đề phải phù hợp với các cú pháp sau:
2.9 Tên tiêu đề
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 "
Vì vậy, như chúng ta có thể trích xuất từ phần này, tên tệp tiêu đề cũng có thể là bất cứ điều gì hợp lệ trong mã nguồn. Ngoại trừ việc chứa các '\n'
ký tự và tùy thuộc vào việc nó có được bao gồm bởi <>
nó không được phép chứa a >
. Hoặc theo cách khác nếu nó được bao gồm bởi - bao ""
gồm nó không được phép chứa a "
.
Nói cách khác: nếu bạn có một môi trường hỗ trợ tên tệp như thế prettyStupidIdea.>
, thì bao gồm:
#include "prettyStupidIdea.>"
sẽ hợp lệ, nhưng:
#include <prettyStupidIdea.>>
sẽ không hợp lệ Cách khác xung quanh giống nhau.
Và ngay cả
#include <<.<>
sẽ là một tên tập tin tiêu đề hợp lệ.
Ngay cả điều này sẽ phù hợp với C++
, nó sẽ là một ý tưởng khá ngu ngốc, tho.
Và đó là lý do tại sao .hpp
cũng hợp lệ.
Nhưng đó không phải là kết quả của các ủy ban thiết kế quyết định cho ngôn ngữ!
Vì vậy, thảo luận về việc sử dụng .hpp
cũng giống như làm về nó .cc
,.mm
hoặc những gì tôi đã đọc trong các bài viết khác về chủ đề này.
Tôi phải thừa nhận rằng tôi không có đầu mối .hpp
từ 1 , nhưng tôi sẽ đặt cược một nhà phát minh của một số công cụ phân tích cú pháp, IDE hoặc một cái gì đó liên quan C++
đến ý tưởng này để tối ưu hóa một số quy trình nội bộ hoặc chỉ để phát minh ra một số (thậm chí có thể nhất thiết cho chúng ) quy ước đặt tên mới.
Nhưng nó không phải là một phần của ngôn ngữ.
Và bất cứ khi nào một người quyết định sử dụng nó theo cách này. Có thể là vì anh ấy thích nó nhất hoặc bởi vì một số ứng dụng của quy trình công việc yêu cầu nó, nó không bao giờ 2 là một yêu cầu của ngôn ngữ. Vì vậy, bất cứ ai nói "pp là bởi vì nó được sử dụng với C ++", đơn giản là sai về định nghĩa ngôn ngữ.
C ++ cho phép bất cứ điều gì tôn trọng đoạn trước. Và nếu có bất cứ điều gì mà ủy ban đề xuất sử dụng, thì nó đang sử dụng .h
vì đây là phần mở rộng bị kiện trong tất cả các ví dụ của tài liệu ISO.
Phần kết luận:
Miễn là bạn không thấy / cảm thấy bất kỳ nhu cầu sử dụng .h
hơn .hpp
hoặc ngược lại, bạn không nên bận tâm. Bởi vì cả hai sẽ là một tên tiêu đề hợp lệ có cùng chất lượng đối với tiêu chuẩn. Và do đó, bất cứ điều gì YÊU CẦU bạn sử dụng .h
hoặc .hpp
là một hạn chế bổ sung của tiêu chuẩn thậm chí có thể mâu thuẫn với các hạn chế bổ sung khác không phù hợp với nhau. Nhưng vì OP không đề cập đến bất kỳ hạn chế ngôn ngữ bổ sung nào, đây là câu trả lời đúng và có thể chấp nhận được cho câu hỏi
" * .h hoặc * .hpp cho định nghĩa lớp của bạn " là:
Cả hai đều chính xác như nhau và áp dụng miễn là không có hạn chế bên ngoài.
1 Từ những gì tôi biết, rõ ràng, chính khung tăng cường đã đưa ra .hpp
phần mở rộng đó .
2 Tất nhiên tôi không thể nói những gì một số phiên bản trong tương lai sẽ mang lại cho nó!