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