С++: причина, почему использование ".hh" в качестве расширения для файлов заголовков С++ - программирование
Подтвердить что ты не робот

С++: причина, почему использование ".hh" в качестве расширения для файлов заголовков С++

Я хотел бы знать, почему мы используем ".hh" как расширение для заголовочных файлов C++, а не просто ".h".

Заголовочные файлы предварительно обрабатываются, и препроцессор даже не заботится о расширении заголовочного файла. Таким образом, даже если я создаю заголовочный файл с расширением ".qwe" (test.qwe). Тогда зачем использовать ".hh" как расширение для заголовочных файлов C++.

Некоторые говорят, что мы используем ".cc" в качестве расширения для файлов C++, чтобы отличать их от файлов C (который имеет расширение ".c"), также мы используем ".hh" в качестве расширения для заголовочных файлов C++ чтобы отличить от заголовочных файлов C (который имеет расширение ".h"). Я не думаю, что это является веской причиной.

Кто-нибудь знает причину именования таким способом?

4b9b3361

Ответ 1

Некоторые говорят, что мы используем ".cc" в качестве расширения для файлов С++, чтобы отличать от файлов C (с расширением ".c" ), , так же мы используем ".hh" как расширение для С++ заголовочные файлы для отличия от файлов заголовков C (с расширением ".h" ).

Именно по этой причине. Это просто, чтобы отличать заголовки CPP от заголовков C.

Некоторые программисты и библиотеки, такие как Boost, используют .hpp для заголовков CPP. Мой личный выбор:

  • example.c
  • example.cpp
  • example.h
  • example.h ++

Даже если все они принадлежат к огромному проекту, вы все равно можете выяснить, какой именно. Нет описания.

Ответ 2

Вы можете назвать свои заголовки по своему усмотрению, они даже не могут иметь никакого расширения.

В этом FAQ упоминаются соглашения об именах заголовков.

Ответ 3

Это не по какой-либо конкретной причине, это просто соглашение (разработчик или проект). Поскольку "расширение файла" - это просто часть имени, это не имеет большого значения, поскольку исходные файлы - это просто текстовые файлы. Кроме того, заголовочные файлы просто вставляются в файл, который включает их (через #include, поэтому расширение файла означает для них еще меньше.

Заголовки библиотек Borland имели расширение .hpp. Стандартные библиотеки стандартной библиотеки С++ не имеют расширения. Это просто вопрос условности и личного вкуса.

Ответ 4

Это полностью соглашение, для этого нет особых причин. Обычно люди стараются оставаться последовательными в рамках проекта, или между командами или даже всей компанией. Это помогает разработчикам, которые забирают ваш код после того, как вы давно поняли, что вы abc.hh отправились с файлом abc.cc, а abc.h идет с abc.c.

Ответ 5

Одна из причин, если я создаю dll, у которого есть C API вокруг кучи кода на С++, мне нужно провести различие между моими заголовками C, которые клиент может использовать для импорта функций C и моих внутренних заголовков С++, которые я явно не хотите, чтобы клиент мог импортировать.

Связывание с функцией C довольно просто из большинства языков/сред с практически без накладных расходов. Вам не нужно думать обо всех сложностях, наследуемых на С++. Поэтому, если бы я работал с такой библиотекой, я бы обязательно отделил свой С++ от моего интерфейса C.

Ответ 6

Я думаю, что это в основном социальное соглашение.

Однако недавние компиляторы GCC могут компилировать (одиночный) заголовок foo.hh или foo.h во что-то вроде foo.hh.gch или foo.h.gch, который по существу содержит кучное изображение с постоянной памятью компилятора (cc1plus программа, начатая g++) после того, как она проанализировала этот заголовок.

Обратите внимание, что стандартная библиотека С++ 11 определяет файлы заголовков, например, например. <vector> без какого-либо расширения.