Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
#1

Назначение заголовочных файлов - C++

15.07.2013, 19:03. Просмотров 2306. Ответов 35
Метки нет (Все метки)

Я читала учебник и википедию - никак не доходит.

В общем, может я неправильно поняла: есть у меня "Моя программа.cpp", и есть "Заголовочный файл.hpp". В заголовочном файле прописаны прототипы функций, и классы без определения их методов, этот заголовочный файл включается в мою программу. Все определения содержатся, собственно, в моей программе.
Если это так, то я не понимаю, какой смысл выделять это в отдельный файл, если можно прописать то же самое в самом начале. Просто чтобы был отдельный список, и не надо было скакать вверх-вниз, если надо вспомнить какие параметры нужно передать в функцию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 19:03     Назначение заголовочных файлов
Посмотрите здесь:

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

Объявление заголовочных файлов - C++
Скажите в чем разница между объявлением вида: #include <iostream> и вида #include "iostream"

Иерархия заголовочных файлов - C++
Вопрос такой. Есть 2 заголовочных файла с классами: core.h interface.h В core.h происходит #include interface.h В...

Создание и использование заголовочных файлов - C++
Здравствуйте! Хочу создать заголовочный файл и засунуть туда объявления функций. Так он выглядит #ifndef LONGNUM_H_INCLUDED #define...

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

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

Контроль включаемых заголовочных файлов - C++
Всем привет! У меня родился следующий вопрос: как можно сделать так, чтобы подключаемый файл, при условии, что он уже был ранее...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
15.07.2013, 19:05     Назначение заголовочных файлов #2
Керра, если все определения разместить в заголовочном файле, затем его подключить в несколько cpp, то при сборке программы будет ошибка из-за множества определений функций. Объявлений может быть сколько угодно, определение - одно.
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.07.2013, 19:06     Назначение заголовочных файлов #3
У заголовочного файла .h есть файл .срр, где даны определения всех методов, что содержатся в .h файле.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
15.07.2013, 19:08  [ТС]     Назначение заголовочных файлов #4
0x10, если я правильно понимаю, то определение - это собственно тело функции, а объявление/прототип - это только ее название, с указанием типов параметров. И объявление содержится в .hpp, а определение - в основной программе. Так?

Добавлено через 48 секунд
Kins, тот .cpp, о котором вы говорите - это основная программа, или это еще что-то?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
15.07.2013, 19:10     Назначение заголовочных файлов #5
Цитата Сообщение от Керра Посмотреть сообщение
если я правильно понимаю, то определение - это собственно тело функции
Если прикапываться к формулировкам, то не тело само по себе, а заголовок+тело вместе.

Цитата Сообщение от Керра Посмотреть сообщение
И объявление содержится в .hpp, а определение - в основной программе. Так?
Угу.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
15.07.2013, 19:13  [ТС]     Назначение заголовочных файлов #6
Цитата Сообщение от 0x10 Посмотреть сообщение
не тело само по себе, а заголовок+тело вместе
Ну я это и имела в виду

То есть получается, что это просто для того, чтобы было удобно смотреть, и все?
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.07.2013, 19:13     Назначение заголовочных файлов #7
Цитата Сообщение от Керра Посмотреть сообщение
Kins, тот .cpp, о котором вы говорите - это основная программа, или это еще что-то?
нет, не основная- пример mscons.h - содержит объявления, mscons.cpp- содержит определения. Сама программа например prog.cpp включает в себя #include "mscons.h"
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
15.07.2013, 19:16     Назначение заголовочных файлов #8
Цитата Сообщение от Керра Посмотреть сообщение
То есть получается, что это просто для того, чтобы было удобно смотреть, и все?
Назначение вполне практическое: заголовочный файл предоставляет клиенту необходимые определения для использования в своем коде.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
15.07.2013, 19:19  [ТС]     Назначение заголовочных файлов #9
Kins, так. вот у этих mscons различаются только расширения, то есть этот заголовочный файл "понимает", что тот .cpp относится к нему, и когда я его включаю в основную программу, включаются и те определения, которые находятся в mscons.cpp. Вроде наконец-то понятно))
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
15.07.2013, 19:21     Назначение заголовочных файлов #10
Цитата Сообщение от Керра Посмотреть сообщение
Вроде наконец-то понятно))
в файле mscons.cpp тоже есть #include "mscons.h"
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.07.2013, 19:23     Назначение заголовочных файлов #11
Керра, так же раздельная компиляция. Каждый .cpp компилируется отдельно. Если запихать всё в хэдеры, то после препроцессирования получится один большой .cpp, и при любом изменении придётся перекомпилировать всё.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
15.07.2013, 19:23     Назначение заголовочных файлов #12
Цитата Сообщение от Керра Посмотреть сообщение
заголовочный файл "понимает", что тот .cpp относится к нему, и когда я его включаю в основную программу, включаются и те определения, которые находятся в mscons.cpp
Нет, все предельно тупо и просто.
Подключение заголовочного файла на уровне текста производит подстановку его содержимого. Далее *.cpp файлы компилируются по отдельности, на выходе получаются объектные файлы. Определения функций тут еще не нужны. И только потом когда объектные модули компонуются в окончательную сборку (пусть исполняемый файл) - происходит связывание и разрешение ссылок те же функции.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
15.07.2013, 19:23  [ТС]     Назначение заголовочных файлов #13
Kins, ага. Ясненько, сейчас попробуем)
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
15.07.2013, 19:24     Назначение заголовочных файлов #14
Цитата Сообщение от gray_fox Посмотреть сообщение
то после препроцессирования получится один большой .cpp
Фиг с ним, с размером. Важнее проблема возникновения множества определений функций в разных объектных модулях.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2013, 19:25     Назначение заголовочных файлов
Еще ссылки по теме:

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

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

Взаимное включение заголовочных файлов - C++
Нужно передать объект по ссылке Вот как сейчас: //LoadImages.h class LoadImages { ttfInit(); }; //LoadImages.cpp ...

Перекрёстное подключение заголовочных файлов - C++
Здоровеньки булы. Есть 2 класса, каждый в своём хедере. В классе А есть экземпляр (не указатель) класса В и наоборот. Как организовать...

Правильное включение заголовочных файлов - C++
Привет, хочу задать такой вопрос. У меня есть классы в файлах Menu.h, Options.h, About.h, Game.h, Pause.h. Каждый из этих классов должен...


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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.07.2013, 19:25     Назначение заголовочных файлов #15
Цитата Сообщение от 0x10 Посмотреть сообщение
Важнее проблема возникновения множества определений функций в разных объектных модулях.
Ну так объектный модуль то один будет)
Yandex
Объявления
15.07.2013, 19:25     Назначение заголовочных файлов
Ответ Создать тему
Опции темы

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