Другие языки программирования и технологии

[C++] Добавление .cpp-файлов в проект

Делаю "игру". Создал уже 6 .h-файлов с классами, функциями etc. А cpp всего один - main.cpp, и в него весь этот изврат подключается.
Но во многих проектах все это дело лежит в .cpp
Как правильно подключить .cpp-файл и в чем разница между .h и .cpp?
И какие могут быть подводные камни?)
Вадим Петров
Вадим Петров
1 456
это все называется проектированием. и делают так потому что это удобно.
например, если хранить в хидерах только объявления, то всего пары секунд будет достаточно для того, чтобы понять, что данный класс умеет делать.
Mad Vlad
Mad Vlad
38 447
Лучший ответ
Вадим Петров А вес файла от этих "отдельных объявлений" и прототипов не увеличится?
Ну вот пишешь ты программу на Си в которой нужно использовать математические функции.
Приходится подключать заголовочный файл math.h, в котором собраны прототипы всех математических функций.
Если функция без прототипа, то она будет видна из кода только в том случае, если определена выше.
Нашли способ, указывать выше только прототип функции, её объявление, а саму функцию, в этом случае, определяют в любом месте программы.
Прототип, указывают в заголовочном файле, который потом подключается директивой includ вверху исходного кода.
После этого все функции, прототипы которых указаны в заголовочном файле, становятся доступными для использования.
Сами же функции реализованы, каждая в своём c-файле.
Точно также и в С++ каждому классу свой отдельный cpp-файл.
Такая архитектура позволяет решать много задач, часть из которых упомянута выше.
Главная из которых, чем короче код, тем меньше в нём ошибок.
Игорь Иванов
Игорь Иванов
79 736
cpp компилируется и если все держать в одном файле, то придется все каждый раз заново компилить, что для огромных проектов займет много времени

Прототип функции надо тогда, когда просто требуется описать функцию которая еще не известна и будет где-то определена ниже или когда вообще будет определена в другом модуле. Да и по прототипу компилятор понимает какую функцию подставить, так как имя может быть одинаковым, но по типам можно понять конкретно какая функция нужна
Как можно писать код для игры, знать как его писать.... но при этом не знать такую херню о том, что h это заголовочный файл? (Просто интересно) Ты можешь все функции объявить и в main, но в заголовочном файле они объявляются просто ради удобства.... просто видно так лучше.... ориентироваться проще. Можно вообще для каждой функции создать отдельный cpp файл и назвать его именем функции, которую создашь в этом cpp файле. Но чтобы main знал что этот файл есть надо создать заголовочный файл, в котором объявить эту функцию, создав её прототип. Прототип функции - это объявление функции.... обычно мы пишем функцию сразу со всем её содержимым - это объявление и определение одновременно ...но если просто только объявить, то она будет пустой, без тела (содержимое в фигурных скобках) ...к примеру int add(int, int )