В чем разница между файлами с расширениями .h и .hpp в C++? Что лучше использовать?
2 Answers
Строго говоря разницы между ними нет совсем. Разница может быть лишь в том, как IDE их интерпретирует. .h, если следовать некоторой логике, это заголовок для C(.c), тогда как .hpp это заголовок для C++(.cpp, .cxx etc.). Но всё это условности и зависят от предпочтений и используемых IDE. К примеру, в Visual Studio мы имеем .h и .cpp файлы, по умлочанию.
Единственно, на мой взгляд, где различное именование может принести пользу, это в проекте, где сочетается C и C++ код. Тогда стоит иметь .h/.c для C-кода и .hpp/.cpp для C++ когда. Других применений, кроме персональных предочтений, я не вижу.
- 23,825
Принципиальной разницы в поведении препроцессора в зависимости от расширения хедера нет. По большей части ему плевать на расширение, он включит файл с любым расширением или без него.
Разные расширения для С-ных и С++-ных хедеров сделаны скорее для удобства программистов. Если видите хедер .hpp - даже не пытайтесь включать его в проект, написанный на чистом С, потому что, скорее всего, в нём будут описаны структуры, характерные только для C++ (классы, шаблоны и т. п.). Хедер .h можно (с оглядкой на то, что C не является подмножеством C++) включать в проекты, написанные на C++. Также IDE может применять различные правила форматирования и подсветки синтаксиса для хедеров .h и .hpp.
- 23,403
.hpp, что должен делать метод класса, например так:void test::test(){ ... }, g++ не видел этого в упор? – Apr 17 '15 at 06:39hppэто загловок, Вы, видимо, пытаетесь использовать его как файл с кодом. – ixSci Apr 17 '15 at 06:41.h, такой трюк катит, хотя это не совсем хорошо. – Apr 17 '15 at 06:42.hфайл с интерфейсом, который вы реализуете в.hppфайле. Мне сложно судить о gcc, т.к. я им не пользуюсь и не знаю, что ему не нравится. – ixSci Apr 17 '15 at 06:44