Разница между .h и .hpp

Рейтинг: 20Ответов: 2Опубликовано: 17.04.2015

В чем разница между файлами с расширениями .h и .hpp в C++? Что лучше использовать?

Ответы

▲ 34Принят

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

Единственно, на мой взгляд, где различное именование может принести пользу, это в проекте, где сочетается C и C++ код. Тогда стоит иметь .h/.c для C-кода и .hpp/.cpp для C++ когда. Других применений, кроме персональных предочтений, я не вижу.

▲ 17

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

Разные расширения для С-ных и С++-ных хедеров сделаны скорее для удобства программистов. Если видите хедер .hpp - даже не пытайтесь включать его в проект, написанный на чистом С, потому что, скорее всего, в нём будут описаны структуры, характерные только для C++ (классы, шаблоны и т. п.). Хедер .h можно (с оглядкой на то, что C не является подмножеством C++) включать в проекты, написанные на C++. Также IDE может применять различные правила форматирования и подсветки синтаксиса для хедеров .h и .hpp.