| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Что же такое .h и .cpp? |
| Автор: GKosh 24.1.2006, 21:06 |
| Пробовал искать по форуму, вероятно плохо искал. Итак, мне наконец-то хотелось бы четко представлять себе как именно компонуется исполняемый код. Допустим у меня есть три файла 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 24.1.2006, 21:34 | ||
| Представь себе это так: каждое обьявление обьекта (функции, класса, или переменной) заменяется компилятором на число. Число это - адрес обьекта в памяти. Естественно обьявление должно произойти ДО использования обьекта. Если .h два раза инклюдится в проект, то естественно, что также вылетает ошибка, потому что число обьекту уже присвоено и тут присваивается ещё раз. Для этого делается:
В этом случае компилер первый раз пропарсит файл, а по второму разу "перепрыгнет". |
| Автор: GKosh 25.1.2006, 07:46 |
| О! Спасибо большое, а я то гадал зачем эти #ifndef? Теперь все стало на свои места. |
| Автор: KyKy 25.1.2006, 13:08 | ||||||
Дам простенький примерчик на сложение двух чисел с .h и .cpp
Такой вот примем даёт неплохое представление как всё делать. |