![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| GKosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.12.2005 Репутация: нет Всего: нет |
Пробовал искать по форуму, вероятно плохо искал.
Итак, мне наконец-то хотелось бы четко представлять себе как именно компонуется исполняемый код. Допустим у меня есть три файла 1.cpp, 2.h и 2.cpp: //1.cpp: #include "2.h" void main() { do_something() ; } //2.h: void do_something(); //2.cpp: #include "2.h" void do_something() { } Как будет выглядить гипотетический скомпонованный файл? Наверное не так: void do_something(); void main() { do_something() ; } void do_something() { } Тогда как? По какому вообще принципу использовать #include в проекте с большим числом файлов, один супер .h-файл хоть и работает но не слишком-то практичен, когда же действуешь по принципу "Каждому .cpp необходимые ему .h" получаешь настоящий ворох ошибок линковщика. Вообщем никакой ясности относительно компоновки исходных файлов в бедной моей голове нет, хотя уверен все это должно быть несложно. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Представь себе это так:
каждое обьявление обьекта (функции, класса, или переменной) заменяется компилятором на число. Число это - адрес обьекта в памяти. Естественно обьявление должно произойти ДО использования обьекта. Если .h два раза инклюдится в проект, то естественно, что также вылетает ошибка, потому что число обьекту уже присвоено и тут присваивается ещё раз. Для этого делается:
В этом случае компилер первый раз пропарсит файл, а по второму разу "перепрыгнет". |
|||
|
||||
| GKosh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.12.2005 Репутация: нет Всего: нет |
О! Спасибо большое, а я то гадал зачем эти #ifndef? Теперь все стало на свои места.
|
|||
|
||||
| KyKy |
|
||||||
![]() КуКу Профиль Группа: Участник Сообщений: 39 Регистрация: 2.1.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Дам простенький примерчик на сложение двух чисел с .h и .cpp
Такой вот примем даёт неплохое представление как всё делать. |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |