Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
1

Как правильно из одного cpp подключить другой

06.10.2012, 00:02. Просмотров 4298. Ответов 34
Метки нет (Все метки)

Есть 2 .cpp файла: a.cpp и b.cpp. Когда пишу:

C++
1
2
/* a.cpp */
#include "b.cpp"
Выдает ошибку. Как правильно из одного cpp подключить другой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 00:02
Ответы с готовыми решениями:

Как подключить элементы из cpp файла?
Доброе утро. У меня вопрос. Есть отдельно header(где прототип функции) и cpp...

Как подключить cpp-файл к h-файлу?
как связать файл Form1.h с главным файлом проекта 1.cpp ? что то вроде того...

Как подключить cpp файл к проекту?
есть cpp файл date где описаны класс и его методы подключаю к main с помощью...

Как подключить файл ресурсов Dev-Cpp
Ну могу подключить файл ресурсов на Dev-Cpp файл: #include <windows.h>...

Как правильно подключить lib
Добрый день. Пишу консольную программу на C++ (без использования Qt) с...

34
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.10.2012, 00:50 2
cpp-файлы не предназначены для влючения
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2012, 01:00 3
Цитата Сообщение от Kgfq Посмотреть сообщение
Как правильно из одного cpp подключить другой?
Зачем нужно подключить?
0
Invader_Zim
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
06.10.2012, 01:02 4
Jupiter, не предназначены, но подключить можно.

Не по теме:

Вы так говорите, как будто это что-то плохое! :)

0
mirax
0 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 01:02 5
вот занимался с запуском батника через екзешник.

если что понадобиться

C++
1
2
3
4
5
6
#include <windows.h>
#include <ShellAPI.h>
int main()
{
    ShellExecute (0, TEXT("open"), TEXT("1.exe"), NULL,NULL, SW_RESTORE);
}
0
Jupiter
06.10.2012, 01:41
  #6

Не по теме:

Цитата Сообщение от Invader_Zim Посмотреть сообщение
Вы так говорите, как будто это что-то плохое!
именно плохое

1
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
06.10.2012, 08:38 7
Лучший ответ Сообщение было отмечено как решение

Решение

Само по себе включение через #include любого текстового файла ошибки не вызывает. Прекомпилятору совершенно по барабану, что это за файлы. Его работа проста - вместо #include вставить этот файл (ну и еще всякие макросы, но в данном случае это к делу не относится).
А вот то что получилось поступает на вход компилятору, он уже внимательнее следит за текстом, ему программу сделать надо.
Так что ошибки могут быть совершенно разные...
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
06.10.2012, 10:20  [ТС] 8
как мне сказали, проект, состоящий из одного .срр и всех остальных .h - это плохо. пытаюсь исправить.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2012, 19:17 9
Цитата Сообщение от Kgfq Посмотреть сообщение
как мне сказали, проект, состоящий из одного .срр и всех остальных .h - это плохо. пытаюсь исправить.
Остался вопрос: зачем подключать файл .cpp? Без этого что, не компилируется?
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 12:42  [ТС] 10
alsav22, ведь срр компилируется отдельно и если в нем ничего не менять от компиляции к компиляции, он компилироваться не будет и процесс будет занимать меньше времени. Разве не так?
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.10.2012, 12:58 11
Цитата Сообщение от Kgfq Посмотреть сообщение
ведь срр компилируется отдельно и если в нем ничего не менять от компиляции к компиляции, он компилироваться не будет и процесс будет занимать меньше времени.
Kgfq, это не ответ на вопрос:
Цитата Сообщение от alsav22 Посмотреть сообщение
зачем подключать файл .cpp?
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 13:17  [ТС] 12
Jupiter, ответ. что бы уменьшить время компиляции
0
defer
558 / 238 / 16
Регистрация: 29.11.2010
Сообщений: 800
07.10.2012, 14:03 13
Цитата Сообщение от Kgfq Посмотреть сообщение
как мне сказали, проект, состоящий из одного .срр и всех остальных .h - это плохо. пытаюсь исправить.
Вы не правильно поняли, что надо исправлять.
Надо разделять объявление функции в файл .h и реализацию в файл .cpp, но подключать надо именно .h

то есть, допустим, у вас есть в проекте 3 файла main.cpp, func.h, func.cpp
и в файле func.h объявлена функция Sort(), а в func.cpp она реализована и в main.cpp подключен func.h

вы компилируете программу, если компилятор от microsoft, на выходе будет два файла, main.obj и func.obj

а потом вы решаете изменить функцию Sort(), берете файл func.cpp и переписываете функцию Sort() и компилятор заново скомпилирует только func.obj, а main.obj не будет перекомпилирован
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 16:47  [ТС] 14
defer, а как связать func.h и func.cpp?
0
defer
558 / 238 / 16
Регистрация: 29.11.2010
Сообщений: 800
07.10.2012, 17:19 15
Цитата Сообщение от Kgfq Посмотреть сообщение
а как связать func.h и func.cpp?
в func.cpp написать
C++
1
#include "func.h"
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 18:44  [ТС] 16
defer, А смысл? Ведь мы подключаем func.h

Добавлено через 38 минут
в мэйне, имеется ввиду.
значит в func.h должно быть написано #include "func.cpp"?
0
defer
558 / 238 / 16
Регистрация: 29.11.2010
Сообщений: 800
07.10.2012, 19:40 17
Цитата Сообщение от Kgfq Посмотреть сообщение
значит в func.h должно быть написано #include "func.cpp"?
нет, вот этого #include "func.cpp", не надо писать

#include "func.h" надо писать и в main.cpp и в func.cpp

а в начале func.h написать
C++
1
#pragma once
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
07.10.2012, 21:05 18
Kgfq, суть всего этого в следующем. При компиляции cpp-файла компилятору необходимо знать, какой вид имеют прототипы всех используемых в этом файле функций. Реализацию ему знать необязательно. Поэтому прототипы эти определяются в заголовочных файлах, которые и подключаются в файлы реализации. Когда же из каждого исходного файла получен объектный файл, в дело вступает редактор связей (линкёр). Вот он-то генерирует бинарный файл и редактирует адреса в местах вызовов функций, ища реализацию этих функций в объектных модулях, полученных на стадии трансляции, и заменяя подставленные компилятором заглушки на реальные адреса. Именно на этом факте основывается отсутствие необходимости перекомпилировать файл, который не изменялся с момента последней генерации объектного файла.
Включение же исходного файла посредством include сводит эту прелесть на нет, ведь сначала один исходный файл будет перенесён в другой, а потом этот сросшийся близнец будет откомпилирован целиком, что не уменьшит время компиляции, но наоборот увеличит его.
2
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 21:11  [ТС] 19
silent_1991, хм, за теорию спасибо, стало яснее. Не могли бы вы сделать проект с maim.cpp, func.h и func.cpp, что бы я наглядно увидел?
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.10.2012, 21:44 20
Вы лучше свой покажите. Многие вопросы отпадут в процессе работы. Например этот:
Цитата Сообщение от Kgfq Посмотреть сообщение
А смысл? Ведь мы подключаем func.h в мэйне
Если у вас в func.h будут прототипы, а в func.cpp из реализация, то без подключения в func.cpp func.h, у вас ничего не откомпилируется.
0
07.10.2012, 21:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 21:44

Как правильно подключить модули?
Задача: Даны натуральное число n, действительные числа x1,y1; x2,y2;......

Как правильно подключить библиотеку SDL
Здравствуйте, подскажите, пожалуйста, как правильно подключить библиотеку SDL....

Как правильно подключить данную библиотеку ?
Доброго времени суток подскажите пожалуйста как правильно подключить данную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru