![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Сабж.
Зачем нужны h. файлы, и когда их нужно употреблять вместо обычных .cpp? (Имеется в виду директива препроцессора #include) |
|||
|
||||
NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
h - сокращённо "header" (заголовочный). Это для формальности...
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
h-файлы ни в коем случае не заменяют cpp-файлы
один h-файл может соответствовать нескольким cpp-файлам, а может вообще не соответствовать ни одному (а может несколько h-файлов соответствовать одному cpp) h-файлы используются, когда нужно писать много одинаковых строк во многих файлах например, какие-нибудь #define или объявления каких-нибудь функций просто обычно, когда пишут какой-то cpp-файл (не тот, который с main), предполагается, что другие файлы будут использовать функции, которые в нем написаны, поэтому делается h-файл, чтобы не заставлять авторов других файлов объявлять нужные им функции - вместо этого они просто подключают h-файл -------------------- qqq |
|||
|
||||
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Я не совсем понял... Если у меня в срр файле описана функция, зачем использовать ее объявление в h файле, если можно подключить срр файл с этой функцией до ее использования?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
не знаю, что ты имеешь в виду под словом "подключить"
есть два варианта: 1. подключить файл cpp в проект 2. подключить его в другой файл с помощью #include в первом случае файлы компилируются каждый отдельно, а потом вместе линкуются, если потом изменить один из них, то перекомпилируется только он, а потом опять пройдет линковка таким образом экономится время между нажатием кнопки F7 и запуком готового exe-шника во втором случае мы получаем огромный cpp-файл (если будем много подключать), который при любом изменении будет перекомпилироваться весь, что будет очень медленно довольно сложно представить сколько бы компилировались программы, если бы нужно было компилировать все стандартные библиотеки а еще можно попробовать вообразить, что в одном проекте присутствуют файлы на разных языках (например, C и Asm) в этом случае #include не поможет, а после компиляции файла различия между языками пропадают в общем для программы с двумя-тремя функциями, может, сойдет и #include cpp-файла, но ни к чему хорошему в серьезной программе это не приведет... -------------------- qqq |
|||
|
||||
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Аа--а-а-а-а... Теперь понял... Спасибо, бегу делать .h файлы.
![]() |
|||
|
||||
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
maxim1000
Слушай, у меня в проекте три файла: main.cpp, people.cpp, people.h В первом используется класс People, определенный в people.cpp. В people.h - объявление этого класса. Вопросы: 1. как объявить этот класс в people.h? 2. нужно ли подключать people.cpp в people.h? 3. МОЖНО ЛИ ВООБЩЕ ОБЪЯВЛЯТЬ КЛАСС В ЗАГОЛОВОЧНОМ ФАЙЛЕ? Спасибо. Это сообщение отредактировал(а) GRON - 31.1.2004, 13:15 |
|||
|
||||
C'hoosen++ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 21.1.2004 Репутация: нет Всего: нет |
Просто если код .срр файла большой, то удобно объявления всех функций
держать в другом файле (с расширением .h), но непосредственно связанным с ним. |
|||
|
||||
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
C'hoosen++
А все-таки в хэдер нужно добавлять #include "соотв. срр-файл" или нет? И как объявить класс? Или это нельзя сделать. |
|||
|
||||
maxim1000 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
people.h:
people.cpp
main.cpp
Это сообщение отредактировал(а) maxim1000 - 31.1.2004, 20:07 -------------------- qqq |
||||||
|
|||||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Header-файлы(или заголовочные вайлы ) содержат прототипы функций которые ты используешь в программе. Для работы функций необходимо что бы ты подключал заголовочные файлы с помощью препроцессорной деррективы, например: #include <stdio.h>.
--------------------
Ner-zul |
|||
|
||||
GRON |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 21.11.2003 Репутация: нет Всего: нет |
Спасибо всем. Тема закрыта.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |