Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Заголовочный файл или Механизм раздельной компиляции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ исправить ошибки. СОРТИРОВКА ВЫЧЕРПЫВАНИЕМ http://www.cyberforum.ru/cpp-beginners/thread555181.html
нашла программу,должна работать ,но выбило много ошибок. Исправляла как могла, но все же некоторые ошибки просто не знаю как убрать. Помогите пожалуйста. вот программа#define NARRAY 8 /* array size...
C++ разработка дин. структуры Помогите с дин. структурами, вообще никак не выходит:( Разработайте динамическую структуру для решения задачи. Даны целые числа p и q. Получить все делители числа q, взаимно простые с числом p. http://www.cyberforum.ru/cpp-beginners/thread555168.html
Reinterpret_cast C++
Не могу понять к чему тут этот каст и каким образом он влияет на результат. char zxc = ((*(reinterpret_cast<const char*>(&(todo == 0 ? length : (todo == 3 ? md: sec))) + cur_length_byte) & (1 <<...
C++ Подправьте пожалуйста код.
#include "stdafx.h" #include "iostream" using namespace std; int main(){ int map; int grass = {1,"grass.jpg"}; // grass = проходимость , grass = путь до картинки for(int x = 0;x<10;x++){...
C++ Как взять разность по модулю между двумя числами int? http://www.cyberforum.ru/cpp-beginners/thread555137.html
Суть в теме: "Как взять разность по модулю между двумя числами int?". Заранее спасибо :)
C++ Составить программу для подсчёта произведения элементов целочисленной прямоугольной таблицы Составить программу для подсчёта произведения элементов целочисленной прямоугольной таблицы Y, состоящей из p строк и k столбцов, сумма двух индексов которых есть число чётное. Использовать... подробнее

Показать сообщение отдельно
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
22.04.2012, 18:14
Цитата Сообщение от Simyrg Посмотреть сообщение
А смысл тогда отграничивать объявление от определения? В смысле не легче ли через #include подключать сразу .cpp, зачем нам необходимо само объявление?
Ещё вопрос, не легче в заголовочном файле ниже приинклудить cpp чтобы не добавлять его в проект?
Есть такое понятие - раздельная компиляция. То есть каждый твой cpp файл переводится в машинный код (то есть не совсем в машинный, но не суть)
Так вот он это делает совершенно не зависимо от других. если ты уже сделал часть проекта в одном Cpp файле, и он успешно работает, если в него не вносить изменений, он не будет каждый раз компилироваться заново. Ты можешь использовать функции из него в другом CPP файле.

В больших проектах полное перестроение проекта может занимать очень много времени, к тому же это совершенно не требуется, если надо, скажем проверить твой СРР файл на синтаксические ошибки. Поэтому удобнее работать только с одним СРР файлом, который компилируется совершенно независимо от других.
Единственное, что ему нужно знать это то, что "где-то" существует функция, принимающая int& и возвращающая int. Для её использования, достаточно указать эту информацию, и Будет сгенерирован вызов этой функции, а куда именно ведёт этот вызов - скажет уже линкер, а не компилятор и вообще это будет потом.

Так вот, ты можешь даже не подключать h файл, а вместо этого написать в начале программы
int myfunc(int&);

Вот только если функция нужна в нескольких СРР файлах, то при изменении, скажем типа аргументов, тебе придётся вносить изменения везде, а не только в H файле

Более того, подключать инклудом СРР файлы не только не нужно, но и нельзя.
Ведь если линкер обнаружит в двух файлах проекта одинаковый функции (а это именно так и будет после того как препроцессор прицепит H файл в начало нескольких СРР), он скажет, что у тебя в одной программе две одинаковые функции и это ошибка.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru