Ответ 1
Просто конвенция, ничего особенного. Фактически вы можете использовать любое расширение для включенных файлов.
Я заметил, что библиотека boost использует заголовочные файлы (.hpp
).
Мне любопытно, так как большинство исходных файлов, которые я вижу, используют обычные заголовочные файлы .h
.
Могут ли быть какие-то особые случаи, которые оправдывают использование .hpp
вместо .h
?
Спасибо
Просто конвенция, ничего особенного. Фактически вы можете использовать любое расширение для включенных файлов.
.hpp,.H и т.д. является свободным соглашением для файлов заголовков С++,.tcc является свободным соглашением для реализации шаблона С++,.h - довольно сильное соглашение для c файлов.
Boost использует расширение hpp, QT использует расширение .h, STL не имеет расширения. Я уверен, что есть библиотеки, которые используют .H, но не видели.
Действительно, Отавио прав.
Я использую hpp/h для разграничения между двумя языками при создании продуктов на смешанном языке. Например, определение класса может идти в .hpp(реализация в .cpp), тогда как файл .h будет определять только функции, поддерживаемые C. Для этого разделения важно знать разницу между языками - с этой целью Я передаю *.c через gcc и *.cpp через g++.
Цель директивы #include "filename"
препроцессора заключается в замене строки #include
на содержимое filename
.
Настолько infact любое имя для файла делало бы, но по мере того как оно случается быть соглашением включенные файлы ".h" или ".hpp", одно преимущество быть выделение синтаксиса в редакторе на вашем выборе (vim в моем случае).
Я слышал, что некоторые программисты UNIX и Linux также часто используют .hh и .cc в отличие от .cpp и .h. Лично мне нравится называть мои файлы заголовков .hh, потому что это помогает emacs различать подсветку синтаксиса C и С++. Я также использую расширение .cc, потому что оно хорошо выглядит вместе с .hh, и оно короче, чем .cpp. И я обычно делаю свое кодирование в средах Linux и для них.
вы просто сообщаете компилятору включить данный файл в свой код во время компиляции. поэтому не имеет значения, какое расширение имеет файл. Но предпочтительно это должен быть текстовый файл.