Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
#1

Отличие статических библиотек и header файлов - C++

11.03.2012, 19:09. Просмотров 1612. Ответов 7
Метки нет (Все метки)

Здравствуйте. Интересно какая, по большому счету, разница между использованием статической библиотеки *.a и header-файлов *.h и в каких специфических случаях предпочтительнее пользоваться той или иной конструкцией (исключая разве что вариант, когда header файлов очень много и эстетичнее их превратить в статическую библиотеку).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2012, 19:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отличие статических библиотек и header файлов (C++):

Использование header-файлов - C++ Builder
Ситуация следующая: в файле Vector.h находится описание класса, а в файле Vector.cpp - реализация методов класса. Первый файл включен во...

Конфликт динамических и статических объектов - C++ Builder
Здравствуйте, на днях столкнулся с проблемой: при обработке событий динамически созданных объектов нет доступа к статическим объектам...

создание header файлов vs 2010 - Visual C++
собственно вопрос, как создать хедер на ms vs 2010? уже и гуглил, и на , msdn читал, но не могу понять(

Избавиться от статических переменных - Visual C++
помогите в реализации этого приложения,но так чтобы не было статических переменных static int xPos =0; static int yPos=0; #include...

Изменение цвета статических элементов - C++ WinAPI
В msdn нашёл пример: case WM_CTLCOLORSTATIC: { HDC hdcStatic = (HDC)wparam; ...

Скрытие warning сторонних статических библиотек в g++ - C++
Здравствуйте! Я статически подключаю библиотеку (liblibrary.a), и тут компилятор gnu g++ выдает мне предупреждение на одно из мест в...

7
alex_x_x
бжни
2454 / 1659 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2012, 19:12 #2
статическая библиотека не участвует в компиляции, а участвует только в линковке
можно конечно писать header-based код (как в бусте), но это вообщемто сложнее, требует большее затрат времени на компиляцию и вообще это должно быть исключительно мотивировано
1
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
11.03.2012, 19:23  [ТС] #3
А на последующую работу исполняемого файла это никак не влияет?? В том смысле что пусть я, к примеру, пишу поиск по двоичному дереву, описывая функцию самого поиска в первом случае в каком-то header-файле, а во втором создавая библиотеку с этой самой функцией. На выходе у меня два одиноковых бинарника, гарантированно ли, что на одних и тех же данных (пусть сколь угодно огромных) время поиска в обоих случаях будет одинаковым??

P.S. возможно этот вопрос странный
0
NoMasters
Псевдослучайный
1906 / 1117 / 77
Регистрация: 13.09.2011
Сообщений: 3,169
11.03.2012, 19:31 #4
Не гарантировано, из хидеров компилятор может чего-нибудь заинлайнить.
1
alex_x_x
бжни
2454 / 1659 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2012, 19:36 #5
Цитата Сообщение от NoMasters Посмотреть сообщение
Не гарантировано, из хидеров компилятор может чего-нибудь заинлайнить.
ну да, но я бы не забивал голову и писал статической/динамической библиотекой
1
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
11.03.2012, 20:01  [ТС] #6
Спасибо.

Правда хотелось бы уточнить некоторый небольшой нюанс. Обращусь к предыдущему примеру. Могу ли я написать программу тестов, часть из которых бы фейлилась на первом исполняемом файле (исходный код которого включает header файл), а часть фейлилась на втором исполняемом файле (который скомпилирован с использованием статической библиотеки). Или же при таком выборе мы имеем однозначно лучший вариант для любых ситуаций.
0
NoMasters
Псевдослучайный
1906 / 1117 / 77
Регистрация: 13.09.2011
Сообщений: 3,169
11.03.2012, 20:23 #7
Корректность кода по идее не должна зависеть от того, каким образом его собирать. Но статические библиотеки, как уже говорилось, не нужно собирать каждый раз, а динамические зачастую ещё и разделяются между запущенными процессами, экономя оперативку.
0
IvanMIPT
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 9
11.03.2012, 20:41  [ТС] #8
Я имел ввиду пример программы. Всмысле поиск по дереву, написанный двумя разными способами.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2012, 20:41
Привет! Вот еще темы с ответами:

Быстродействие программы при использовании статических и динамических библиотек - C++
Всем привет! Понимаю, что вопрос простой... но не могу, не получить экспертного мнения. Правильно ли я понимаю, что программы, которые...

В чем отличие статической линковки библиотек от динамической? - C++
В чем отличие статической линковки библиотек от динамической?

Отличие заголовочных файлов - C++
чем отличается string.h cstring string

Папки header файлов. VS 2010 - C++
Подскажите как в Visual Studio 2010 указать, где находятся header файлы. В папке, где находятся соответствующие cpp файлы (в папке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru