Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Про инклюды в с++  (Прочитано 1142 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Swa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Про инклюды в с++
« : 05 Мая 2009, 20:08:09 »
Здравствуйте. С++ я изучаю недавно и хочу спросить, как правильно делать включения заголовочных файлов.
К книжке по Qt3 прилагается диск с исходниками, там есть такой пример: есть файлы main.cpp, add.cpp, add.h.  Файл add.h включается в main.cpp и в add.cpp, но сам add.cpp не включается в main.cpp. Почему?, его автоматически включает препроцессор?
Я думал, что логичнее будет так add.h--->add.cpp, add.cpp-->main.cpp. Объясните, как правильно подключать файлы. В гугле ничего толкового не нашёл.


Оффлайн AlexH

  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
Re: Про инклюды в с++
« Ответ #1 : 05 Мая 2009, 20:22:36 »
В краце: *.h - только объявление (например имя функции , возвращаемый тип, тип параметров) *.cpp - реализация, то .есть исходный код функций. Чтобы использовать функцию - достаточно  ее объявить. - то есть  подключить файл с объявлением (#include <*.h>).
Теоретически можно включить в один *.cpp  другой *.cpp (#include<*.cpp>). Но как правило  несколько *.cpp объединяются на уровне проекта (makefile)
arch x86_64

Оффлайн Oleg K

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Про инклюды в с++
« Ответ #2 : 05 Мая 2009, 21:20:24 »
ТС, ты не понимаешь как происходит сборка бинарника и из-за этого все ошибки.

Оффлайн Surzh

  • Участник
  • *
  • Сообщений: 153
    • Просмотр профиля
Re: Про инклюды в с++
« Ответ #3 : 05 Мая 2009, 22:34:49 »
если говорить упрощенно, то сначала каждый cpp собирается отдельно в свой (одноименный?) объектный файл. Для этого каждому из них  нужно знать, с какими функциями и типами они могут работать(эту инфу они черпают и хедеров). А дальше, эти объектные файлы собираются воедино в исполняемый файл(так называемый процесс линковки)
return 0;

 

Страница сгенерирована за 0.034 секунд. Запросов: 21.