Подтвердить что ты не робот

Какая разница между файлом заголовка и библиотекой?

Одна из вещей, которые мне трудно понять, - это то, как работает компилятор. У меня с этим много трудностей, но, в частности, я все время смешиваю заголовки и библиотеки. Если кто-то может немного разобраться, это будет здорово.

4b9b3361

Ответ 1

Подумайте обо всех подобных (Отказ от ответственности: это действительно высокоуровневая аналогия;)..

  • Заголовок - телефонный номер, который вы можете вызвать, в то время как...
  • ... библиотека - это тот человек, с которым вы можете связаться там!

Это принципиальное различие между "интерфейсом" и "реализацией"; интерфейс (заголовок) сообщает , как, чтобы вызвать некоторую функциональность (не зная, как это работает), в то время как реализация (библиотека) является фактической функциональностью.

Примечание. Концепция настолько фундаментальна, что позволяет вам гибко: вы можете иметь один и тот же заголовок для разных библиотек (т.е. функциональность точно вызывается таким же образом), и каждая библиотека может реализовать функциональность по-другому, Сохраняя тот же интерфейс, вы можете заменить библиотеки, не меняя свой код.

И: вы можете изменить реализацию библиотеки, не нарушая код вызова!

Ответ 2

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

Например, если вы оптимизировали программу, вы, скорее всего, измените исходный файл (.cpp), чтобы улучшить алгоритм, но файл заголовка не изменится, поскольку внешние клиенты все еще вызывают методы с использованием одного и того же набора параметров и возвращаемых значений.

В объектно-ориентированном языке, таком как С++, заголовочный файл обычно включает в себя следующее:

  • Описание класса и иерархия наследования
  • Члены и типы данных класса
  • Методы класса

В то время как в заголовочном файле нет никакого кода остановки, это обычно не рекомендуется, поскольку он может вводить дополнительные дополнительные связи и зависимости в коде.

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


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

Код определен в библиотеке для предотвращения дублирования кода и поощрения повторного использования. Библиотека может быть статически связана (.lib) или динамически связана (.dll):

  • A статически связанная библиотека определяет набор экспортных символов (которые можно рассматривать как определения методов), которые затем связаны в конечном исполняемом файле (.exe) на этапе связывания процесса сборки. Это имеет преимущество более быстрого времени выполнения (поскольку библиотека не нуждается в динамической загрузке) за счет большего двоичного файла (поскольку методы по существу реплицируются в исполняемый файл).

  • Библиотека с динамической связью связана во время выполнения программы, а не с привязкой программы. Это полезно, когда несколько программ должны повторно использовать одни и те же методы и широко используются в таких технологиях, как COM.

Ответ 3

Одна вещь, которая может вас сбивать с толку, заключается в том, что библиотека слов может иметь несколько значений в С++. Здесь обсуждалось одно значение:

Связываемый набор функций в двоичном файле. Они могут быть статически связаны или динамически связаны.

Но есть и другой тип библиотеки: так называемые библиотеки только для заголовков (включая части STL, TR1 и Boost). Они не существуют в отдельной двоичной форме, поэтому библиотека слов не относится к конкретному двоичному файлу, а скорее к набору включенных файлов заголовков.

Надеюсь, что это поможет.

Ответ 4

Библиотека - это код, скомпилированный в набор объектных файлов. Объектные файлы содержат скомпилированный машинный код и декларации данных, используемые кодом.

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

Ответ 5

Заголовок содержит только объявление, тогда как библиотеки также содержат реализацию.

Ответ 6

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

Ответ 7

Если библиотека в языках программирования является общей библиотекой, то многие книги, представленные в библиотеке, можно сравнить с функциями/методами на языках. А также файлы заголовков можно сравнить с номером строки книги Предположим, есть книга в какой-то библиотеке в Хайдарабаде и в этой библиотеке, эта книга присутствует в строке № 24... Точно так же адрес библиотеки задается с использованием пространства имен std (для стандартной библиотеки), а строка No задается заголовочным файлом, где все книги (методы в этом случае) того же времени (все методы, связанные с потоками ввода/вывода ) выставлены

Ответ 8

ФАЙЛ HEADER - это то, в котором записано объявление функции. Используя заголовочный файл, мы можем получить доступ к определенной функции

а

LIBRARY FILE - это то, в котором записывается определение конкретной функции. MATH.H - ФАЙЛ HEADER, а MATH.LIB - это файл библиотеки.

Ответ 9

Работа с файлом HEADER и библиотекой в ​​программе.

A заголовочный файл содержит ссылки на библиотеки (библиотеки содержат стандартные функции и методы), компилятор распознает стандартные функции, используемые в исходном коде, через препроцессор, который разрешает все директивы (директивы - это строки в программе, которым предшествует знак #, который включает) перед фактической компиляцией программы.

Спасибо за чтение!

Ответ 10

Я думаю, что библиотека как пакет кода, который многократно используется, и этот код предварительно скомпилирован, поэтому он доступен в стандартной форме, так что нам не нужно писать этот код для каждой разрабатываемой нами программы. И заголовочный файл простым образом содержит ссылку на этот код, функции, которые мы используем в нашей программе, такие как "cin" и "cout", полностью определены в стандартной библиотеке, а файлы заголовков, такие как заголовочный файл iostream, содержат ссылку на этот код.  Поэтому, когда мы скомпилируем наш код, мы просто получаем precompiled для cin и cout, и нам не нужно писать код для cin и cout для каждого использования. Или более простым способом можно сказать, что библиотека содержит коды для всех функций, а заголовочный файл - это способ достичь этого кода.

Ответ 11

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

Заголовочный файл - это местоположение (интерфейс) библиотеки

Ответ 12

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

Ответ 13

Библиотеки похожи на мертвых мумий, завернутых в белые длинные потоки. Они мертвы. Только способ их выпуска - это файлы заголовков. Заголовочные файлы содержат способы оживить их, и их можно оживить многократно (повторное использование кода).

Ответ 14

Код из библиотек будет сохранен только для файла заголовка. Будет сохранен весь файл заголовка, который сохранит область хранения процессора.