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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

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

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

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

C++
1
2
/* a.cpp */
#include "b.cpp"
Выдает ошибку. Как правильно из одного cpp подключить другой?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.10.2012, 00:50     Как правильно из одного cpp подключить другой #2
cpp-файлы не предназначены для влючения
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2012, 01:00     Как правильно из одного cpp подключить другой #3
Цитата Сообщение от Kgfq Посмотреть сообщение
Как правильно из одного cpp подключить другой?
Зачем нужно подключить?
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
06.10.2012, 01:02     Как правильно из одного cpp подключить другой #4
Jupiter, не предназначены, но подключить можно.

Не по теме:

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

mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 01:02     Как правильно из одного cpp подключить другой #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);
}
Jupiter
06.10.2012, 01:41
  #6

Не по теме:

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

Байт
Эксперт C
15537 / 9879 / 1484
Регистрация: 24.12.2010
Сообщений: 18,475
06.10.2012, 08:38     Как правильно из одного cpp подключить другой #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Само по себе включение через #include любого текстового файла ошибки не вызывает. Прекомпилятору совершенно по барабану, что это за файлы. Его работа проста - вместо #include вставить этот файл (ну и еще всякие макросы, но в данном случае это к делу не относится).
А вот то что получилось поступает на вход компилятору, он уже внимательнее следит за текстом, ему программу сделать надо.
Так что ошибки могут быть совершенно разные...
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
06.10.2012, 10:20  [ТС]     Как правильно из одного cpp подключить другой #8
как мне сказали, проект, состоящий из одного .срр и всех остальных .h - это плохо. пытаюсь исправить.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.10.2012, 19:17     Как правильно из одного cpp подключить другой #9
Цитата Сообщение от Kgfq Посмотреть сообщение
как мне сказали, проект, состоящий из одного .срр и всех остальных .h - это плохо. пытаюсь исправить.
Остался вопрос: зачем подключать файл .cpp? Без этого что, не компилируется?
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 12:42  [ТС]     Как правильно из одного cpp подключить другой #10
alsav22, ведь срр компилируется отдельно и если в нем ничего не менять от компиляции к компиляции, он компилироваться не будет и процесс будет занимать меньше времени. Разве не так?
Jupiter
Каратель
Эксперт С++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.10.2012, 12:58     Как правильно из одного cpp подключить другой #11
Цитата Сообщение от Kgfq Посмотреть сообщение
ведь срр компилируется отдельно и если в нем ничего не менять от компиляции к компиляции, он компилироваться не будет и процесс будет занимать меньше времени.
Kgfq, это не ответ на вопрос:
Цитата Сообщение от alsav22 Посмотреть сообщение
зачем подключать файл .cpp?
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 13:17  [ТС]     Как правильно из одного cpp подключить другой #12
Jupiter, ответ. что бы уменьшить время компиляции
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
07.10.2012, 14:03     Как правильно из одного cpp подключить другой #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 не будет перекомпилирован
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 16:47  [ТС]     Как правильно из одного cpp подключить другой #14
defer, а как связать func.h и func.cpp?
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
07.10.2012, 17:19     Как правильно из одного cpp подключить другой #15
Цитата Сообщение от Kgfq Посмотреть сообщение
а как связать func.h и func.cpp?
в func.cpp написать
C++
1
#include "func.h"
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 18:44  [ТС]     Как правильно из одного cpp подключить другой #16
defer, А смысл? Ведь мы подключаем func.h

Добавлено через 38 минут
в мэйне, имеется ввиду.
значит в func.h должно быть написано #include "func.cpp"?
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
07.10.2012, 19:40     Как правильно из одного cpp подключить другой #17
Цитата Сообщение от Kgfq Посмотреть сообщение
значит в func.h должно быть написано #include "func.cpp"?
нет, вот этого #include "func.cpp", не надо писать

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

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

Как правильно подключить набор сертификатов в curl? C++
Как правильно подключить свой заголовочный файл? C++
Как правильно подключить lib C++
Как правильно подключить библиотеку SDL C++
SDL 2. Как правильно прилинковать/подключить к Visual Studio? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.10.2012, 21:44     Как правильно из одного cpp подключить другой #20
Вы лучше свой покажите. Многие вопросы отпадут в процессе работы. Например этот:
Цитата Сообщение от Kgfq Посмотреть сообщение
А смысл? Ведь мы подключаем func.h в мэйне
Если у вас в func.h будут прототипы, а в func.cpp из реализация, то без подключения в func.cpp func.h, у вас ничего не откомпилируется.
Yandex
Объявления
07.10.2012, 21:44     Как правильно из одного cpp подключить другой
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru