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

  #7147  
Старый 02.01.2024, 01:58
N08I40K
Участник форума
Регистрация: 19.02.2019
Сообщений: 223
С нами: 3806130

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

Цитата:
Сообщение от AKTPUCCA  

У меня вопрос по многофайловым проектам на языке 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". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.

Для чего нужны Header файлы в С++? Почему нельзя писать без них?

Весь гугл перерыл, не могу понять. И википедию перечитал и вообще все что угодно перечитал. Правда не понимаю. Что мешает подключать просто .cpp файлы? Ну подключил ты его два раза, ну пусть комп...

ru.stackoverflow.com
 
Ответить с цитированием