Каково различие между заголовочными файлами C (.h) и заголовочными файлами C++ (.hpp)?

Я заметил, что библиотека повышения использует заголовочные файлы (.hpp).
Мне любопытно начиная с большинства исходных файлов, я вижу нормальное использование .h заголовочные файлы.
Могли там быть любые специальные экземпляры, которые гарантируют использование .hpp вместо .h ?

Спасибо

13
задан Fuzzy Squid 6 October 2019 в 23:04
поделиться

5 ответов

Просто условность, ничего особенного. Фактически, вы можете использовать любое расширение для включаемых файлов.

22
ответ дан 1 December 2019 в 20:11
поделиться

.hpp, .H и т.д. - это свободная конвенция для заголовочных файлов C++, .tcc - свободная конвенция для реализации шаблонов C++, .h - довольно сильная конвенция для c-файлов.

Boost использует расширение hpp, QT использует расширение .h, STL не имеет расширения. Я уверен, что есть библиотеки, использующие .H, но я их не видел.

6
ответ дан 1 December 2019 в 20:11
поделиться

Действительно, Отавио прав.

Я использую hpp / h, чтобы различать два языка при создании многоязычных продуктов. Например, определение класса может находиться в .hpp (реализация в .cpp), тогда как файл .h будет определять только функции, поддерживаемые C. Для этого разделения важно знать разницу между языками - с этой целью Я передаю * .c через gcc и * .cpp через g ++.

2
ответ дан 1 December 2019 в 20:11
поделиться

Целью директивы препроцессора #include "filename" является замена строки #include содержимым filename .
Таким образом, подойдет любое имя для файла, но, по соглашению, включаемые файлы - это «.h» или «.hpp». Одним из преимуществ является подсветка синтаксиса в редакторе вашего выбор (vim в моем случае).

1
ответ дан 1 December 2019 в 20:11
поделиться

Я слышал, что программисты UNIX и Linux часто используют .hh и .cc вместо .cpp и .h. Лично мне нравится называть свои файлы заголовков .hh, потому что это помогает emacs различать подсветку синтаксиса C и C ++. Я также использую расширение .cc, потому что оно хорошо смотрится вместе с .hh и короче, чем .cpp. И я обычно пишу код в среде Linux и для нее.

0
ответ дан 1 December 2019 в 20:11
поделиться