Почему пакет повышения С++ содержит только файлы hpp
Я новичок в С++. Я просто загрузил библиотеки ускорения для изучения. Я хотел изучить некоторые детали реализации, поэтому я искал файлы cpp. К моему удивлению, я пока не нашел.
Там, кажется, есть только файлы hpp. Где файлы cpp? Этот вопрос может показаться вам наивным, но, пожалуйста, медведь со мной на мгновение.
Ответы
Ответ 1
Файлы .hpp - это заголовки, которые вы должны включить в свой код, чтобы использовать классы повышения. Многие библиотеки ускорения имеют только заголовки; все реализации находятся в файлах hpp. Для тех, у кого есть источник, вы видите только скомпилированные версии как .lib файлы.
Если вы загружаете исходный дистрибутив boost, у него должно быть несколько подкаталогов:
- boost: содержит заголовки .hpp.
- lib: содержит .lib файлы (скомпилированные сведения о реализации)
- libs: источник данных о реализации
Ответ 2
Из Документация Boost:
Большинство библиотек Boost только для заголовков: они состоят полностью из заголовка файлы, содержащие шаблоны и встроенные функции, и не требуют отдельно скомпилированные библиотечные двоичные файлы или специальное обращение, когда сшивание.
См. эту ссылку для списка библиотек, которые не являются только заголовками, и должны быть созданы отдельно. Для этих библиотек файлы .cpp находятся в каталоге /libs Распространение Boost. Если вы получили предварительно скомпилированный пакет, вместо этого вы найдете уже скомпилированные .lib файлы в каталоге/lib.
Ответ 3
Поскольку многие (но не все) библиотеки реализованы с использованием шаблонов и поэтому должны быть помещены в файлы заголовков.
Ответ 4
Для тех, которые не являются заголовками, исходные файлы можно найти внутри подкаталога libs.
Ответ 5
Большая часть библиотеки boost - это просто шаблон. В предыдущем стандарте С++ уже было ключевое слово export, чтобы позволить разработчику отделить реализацию от интерфейса. Печальная правда заключалась в том, что ключевое слово никогда не работало полностью (трудно реализовать с точки зрения поставщика компилятора и сложно использовать его прямо для разработчика). Один из способов устранить проблему - обеспечить интерфейс и реализацию в заголовке и избежать файла реализации. Кстати, есть несколько ускорительных библиотек, которые вам нужно скомпилировать и связать, чтобы использовать их, я уверен, вы найдете файлы реализации в этих библиотеках.
Ответ 6
Я считаю, что большинство библиотек Boost реализованы только в реальных файлах заголовков, как упоминалось в предыдущих плакатах. Как уже упоминалось, скомпилированный код реализации будет включен как отдельный файл библиотеки, если он отделен от файлов заголовков.
Вы упомянули о том, что новичок в С++, поэтому я считаю, что стоит упомянуть, что этот тип дистрибутива библиотеки не является особым для Boost. Другие сторонние библиотеки и API, которые вы используете, скорее всего, будут структурированы таким же образом; вы найдете пакеты файлов заголовков и файлов библиотеки, без файлов .c,.cxx,.cpp и т.д. Это делается по ряду причин, в том числе для скрытия реализации функциональных возможностей библиотеки и для того, чтобы разрешить загрузку разделяемых библиотек в память один раз.
Эта статья может помочь вам прояснить ситуацию:
http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/
Ответ 7
Вероятно, вы смотрите на предварительно скомпилированный пакет, где файлы cpp доступны в виде библиотек, а не из источника. Если вы действительно захватите вы найдете некоторые файлы cpp.