Показать сообщение отдельно

  #7146  
Старый 02.01.2024, 00:36
AKTPUCCA
Новичок
Регистрация: 02.01.2024
Сообщений: 4
С нами: 1246691

Репутация: 1
По умолчанию

У меня вопрос по многофайловым проектам на языке C++. Допустим у меня в проекте следующие файлы:
main.cpp

sum.cpp // определение функции sum(int a, int b) {return a+b};

sum.h // объявление функции

В sum.cpp мы подключаем заголовочный файл (как это говорят делать) #include "sum.h"

В main.cpp мы так же подключаем заголовочный файл #include "sum.h"

Теперь вопрос: если директива "#include" просто вставляет текст из файла, который он подключает, то как на*** работает заголовочный файл; ведь подключая "sum.h" в "main.cpp" мы по сути вставляем ТОЛЬКО объявление функции в main.cpp, но каким-то чудом тут еще и определение из sum.cpp работает, хотя мы его не подключаем, а ДАЖЕ НАОБОРОТ, ЭТО sum.cpp вставляет в себя текст sum.h. Что в итоге: sum.h не содержит в себе текст из sum.cpp, и main.cpp не содержит в себе текст sum.cpp. main.cpp вставляет текст sum.h, а sum.h НЕ вставляет в себя определение функции sum(), то есть НЕ инклудит в себя sum.cpp. Это заставляет меня сомневаться в знании "#include".

В моем понимании, чтобы функция работала, мы должны подключить ее определение, а тут с заголовками мы не подключаем определение (sum.cpp), мы подключаем заголовочный "sum.h", но в самом заголовочном мы не подключаем определение в "sum.cpp". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.
 
Ответить с цитированием