Что касается заголовков в библиотеке, я вижу два варианта, и я не уверен, что выбор действительно имеет значение. Скажем, я создал библиотеку, давайте назовем ее foobar
. Пожалуйста, помогите мне выбрать наиболее подходящий вариант:
Пусть один элемент будет включен в самый корень проекта библиотеки, давайте назовем его foobar.h
, который включает все заголовки в библиотеке, такие как «src / some_namespace / SomeClass.h» и так далее. Затем из-за пределов библиотеки в файле, который я хочу использовать для работы с библиотекой foobar
, просто #include <foobar.h>
.
У меня нет основного включения, и вместо этого включайте только те заголовки, которые нам нужны в местах, где я должен их использовать, поэтому у меня может быть целая куча включений в исходном файле. Поскольку я использую пространства имен, иногда такие глубокие, как 3, включая заголовки, кажется, немного хлопотно.
Я выбрал вариант 1 из-за простоты реализации. OpenGL и многие другие библиотеки, кажется, делают это, поэтому это казалось разумным. Однако стандартная библиотека C ++ может потребовать, чтобы я включил несколько заголовков в любой файл, почему у них не было только одного заголовочного файла? Если только я не идиот и они не отдельные библиотеки ...
Обновление:
В дополнение к ответам, я думаю, имеет смысл предоставить оба варианта, верно? Я был бы очень раздражен, если бы я хотел использовать std :: string, но должен был включать массу заголовочных файлов; это было бы глупо. С другой стороны, я был бы раздражен, если бы мне пришлось набирать массу #include
строк, когда я все равно хотел использовать большую часть библиотеки.
Вперед заголовки:
Спасибо всем, кто посоветовал мне форвард-заголовки, это помогло мне сделать джунгли заголовков менее сложными! :)