Разница между .h и .hpp
В чем разница между файлами с расширениями .h
и .hpp
в C++? Что лучше использовать?
В чем разница между файлами с расширениями .h
и .hpp
в C++? Что лучше использовать?
Строго говоря разницы между ними нет совсем. Разница может быть лишь в том, как IDE их интерпретирует. .h
, если следовать некоторой логике, это заголовок для C(.c
), тогда как .hpp
это заголовок для C++(.cpp
, .cxx
etc.). Но всё это условности и зависят от предпочтений и используемых IDE. К примеру, в Visual Studio мы имеем .h
и .cpp
файлы, по умлочанию.
Единственно, на мой взгляд, где различное именование может принести пользу, это в проекте, где сочетается C и C++ код. Тогда стоит иметь .h
/.c
для C-кода и .hpp
/.cpp
для C++ когда. Других применений, кроме персональных предочтений, я не вижу.
Принципиальной разницы в поведении препроцессора в зависимости от расширения хедера нет. По большей части ему плевать на расширение, он включит файл с любым расширением или без него.
Разные расширения для С-ных и С++-ных хедеров сделаны скорее для удобства программистов. Если видите хедер .hpp - даже не пытайтесь включать его в проект, написанный на чистом С, потому что, скорее всего, в нём будут описаны структуры, характерные только для C++ (классы, шаблоны и т. п.). Хедер .h можно (с оглядкой на то, что C не является подмножеством C++) включать в проекты, написанные на C++. Также IDE может применять различные правила форматирования и подсветки синтаксиса для хедеров .h и .hpp.