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

Разделение программы на файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ не могу разобраться с функциями ( значение функции, заданной с помощью ряда) http://www.cyberforum.ru/cpp-beginners/thread774426.html
Добрый день! пишу программу, которая вычисляет значение функции, заданной с помощью ряда. я плохо разбираюсь в написании функций, но вроде все сделал, написал определение функции до функции tmain, потом саму функцию, но компилятор VS2010 выдает ошибки: error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)-строка 31, 38, 65 требуется...
C++ Оптимизация алгоритма вычисления определителя матрицы Здравствуйте! Написал я давеча программку, которая считает определитель. Только вот беда - он не считает определители матриц выше 10 порядка - тупо не хватает памяти. Я так понимаю, это из-за того, что мой алгоритм - рекурсивный. Так вот, можно ли больше оптимизировать мой код, или эта рекурсия - заведомо плохой вариант? //Определитель вычисляется по формуле det( A ) = a( i, j ) * ( -1 )^( i... http://www.cyberforum.ru/cpp-beginners/thread774425.html
C++ Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать
Здравствуйте. Помогите, пожалуйста, в написании алгоритма на C++. >>Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать.<< Спасибо заранее добрым людям!
Как закрыть документ Word не закрывая приложение? C++
Удалить из заданной строки все вхождения "*". Надеюсь, что с вашей помощью я таки пойму строковые данные на паскаль!
C++ Вложенные циклы и необъявленные идентификаторы http://www.cyberforum.ru/cpp-beginners/thread774311.html
есть часть кода: for(int a=0; a<3;a++) if (a=0) int b=1; else if (a=1) int b=2; else if (a=2) int b=3; for(int c=0; c<3;c++) if (c=0) int d=1; else if (c=1) int d=2; else if (c=2) int d=3;
C++ Хеширование-метод середины квадрата Вот такая ситуация... Тип данных строки, метод разрешения колизии "открытая адресация". Проблема в самой хеш-функции, прочитал много теории, но никак не выходит теорию в жизнь воплатить =) Вот что есть: int _key(char* ch0) { int key; key=strlen(ch0); return key; } подробнее

Показать сообщение отдельно
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
31.01.2013, 19:36     Разделение программы на файлы
Alexxx7, нет, нельзя! Сам не знаю почему, но мне не раз говорили, что НЕЛЬЗЯ подключать .cpp файлы, ни в коем случае!
Процитирую одного человека:
Потому что существует такое понятие "раздельная компиляция". Компилятор может генерировать из СРР файла промежуточный код, совершенно не волнуясь, что в коде недостаточно некоторых переменных и функций.

Непосредственным выполнением директивы #include (грубо говоря копипастингом одного файла в другой) занимается не компилятор, а препроцессор, да. Но если попытаться использовать эту директиву, окажется, что в проекте продублированы некоторые функции.

После работы препроцессора компилятор должен скомпилировать каждый срр файл по отдельности. При этом, в срр файле могут использоваться внешние переменные и функции из других файлов. Компилятору их нужно только их declaration, т.е объявление без тела, чтобы просто сгенерировать вызов с аргументами в правильном порядке или выдать ошибку о синтаксически неправильном вызове функции.

Таким образом, компилятор генерирует промежуточный файл, в котором все функции грамотно вызываются по своему адресу, а вот по какому именно адресу позже разберётся не компилятор, а линкер. При этом одно из достоинств раздельной компиляции то, что при добавлении в проект нового кода(или изменении какого-то срр-файла) остальные файлы не требуется перекомпилировать. К тому же, в программу помимо скомпилированных cpp файлов могут быть включены сторонние библиотеки функций. (файлы с расширением .lib) Все эти куски кода собираются линкером в один exe файл. Он и разбирает, куда ведёт вызов какой функции, и если ты неправильно их объявил или забыл объявить, то выдаёт "Linker error". При этом синтаксис программы был абсолютно грамотный, поэтому компилятор их спокойно прожевал и отдал линкеру.
 
Текущее время: 21:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru