Форум программистов, компьютерный форум 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 столбцов, сумма двух индексов которых есть число чётное. Использовать... подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
22.04.2012, 18:27
зачем нам необходимо само объявление?
Чтобы вызвать функцию, надо знать её сигнатуру, т.е. имя + типы параметров. Для этого достаточно её объявления, оределение не нужно. Смысл в раздельной компиляции. Когда вы собирете программу, сначала препроцессор обрабатывает все макрокоманды (#include, #define и т.д), потом компилятор компилирует все файлы с исходными кодами (*c, *.cpp) в объктные файлы(*.o, *.obj), каждый исходный файл в один объектный файл. Далее компановщик линкует все объектные файлы в один исполняемый. Если какой-то файл исходного кода остался неизменным с момента предыдущей компиляции, то его не надо компилировать заного, ведь соответствующий объектный файл уже есть, его можно сразу линковать => меньше время компиляции.
Например, если у вас есть уже ранеее собраный проект с тремя *.cpp, вы поменяли один из них. Тогда при сборке будет скомпилирован только он. Если же вы эти файлы свалите в один исходник, то при каждом чихе будуте компилироваться весь код проекта.
вот подключаю я например iostream - это же заголовочный файл, а уже тело его где-то ещё лежит но среда сама знает где его искать.
Среда тут не причём, #include-директивами занимается препроцессор, по сути это просто включение содержимого текста (именно поэтому и надо окружать заголовочные файлы с помощью define-guard). Технически вы можете ими не пользоваться и писать все объявления функций и пр. сами).
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru