Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.09.2018
Сообщений: 9

Программирование в разных файлах

25.09.2018, 22:50. Показов 910. Ответов 9

Студворк — интернет-сервис помощи студентам
Я только начинающий программист(даже очень начинающий) и начал с языка c++.
У меня есть файл main.cpp, где вам дают выбрать какою функцию вы хотите выбрать, при выборе определенной функции что бы заработал другой файл, например первая функция находится в файле first.cpp
И вот в чем вопрос, как перейти с main.cpp, к first.cpp и потом обратно что бы программа вернулась к началу?
P.S. Если честно то это принципиально что бы программа была разделена по модулям
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2018, 22:50
Ответы с готовыми решениями:

Видимость переменной в разных файлах
Добрый вечер) Помоги пожалуйста разобраться) Нужно чтобы переменная len из файла 2 попала (была определена) в файле 1. Компилятор выдает...

Сравнение строк в разных файлах
В данном файле в первой строке кол-во последующих строк,со второй строки- запись в формате "событие_год". Нужно вывести в...

Объявлние классов в разных заголовочных файлах
Приветствую всех участников форума. Есть 2 класса А и В. Каждый из содержит указатель на другой класс. Как сделать объявление классов в...

9
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
26.09.2018, 00:31
Кто такие темы создаёт? Боты?
0
1 / 1 / 0
Регистрация: 24.04.2017
Сообщений: 15
26.09.2018, 09:57
Непонятно, какой результат вам нужен.
Допустим, что вы хотите создать некоторую функцию в first.cpp
C++
1
2
3
4
//код в first.cpp
void func1(void){
//какой-то код...
}
потом подключаете этот файл в main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
//примерный код из main.cpp
//подключаете файл first.cpp(должен лежать в одной папке с main.cpp)
#include "first.cpp"
int main(void){
//здесь начинаете что-то делать
//...
//здесь вы вызываете функцию
func1();
//продолжаете что-то делать в main
return 0;
}
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.09.2018, 11:18
Цитата Сообщение от paradohs Посмотреть сообщение
потом подключаете этот файл в main.cpp
C++
1
#include "first.cpp"
потом подключаете в другой файл, потом создаете на форуме тему error LNK1169: one or more multiply defined symbols found, показываете там свой код, отвечаете на вопрос "кто вас так научил?", ссылаетесь на paradohs.
2
1 / 1 / 0
Регистрация: 24.04.2017
Сообщений: 15
26.09.2018, 12:57
Удивительно, но предложенный мой проект скомпилировался и не выдал ни одной ошибки или варнинга.(работаю в Qt creator-е)
Что я сделал не так?
если быть более точным:
C++
1
2
3
4
5
6
7
8
9
10
11
12
//main.cpp
#include <iostream>
#include "first.cpp"
 
int main()
{
    std::cout << "start the program\n";
    //do something
    func1();
    //do something else
    return 0;
}
и
C++
1
2
3
4
5
6
//first.cpp
#include <iostream>
void func1(void){
    //something
    std::cout<<"No error!\n";
}
полагаю, вы работаете в другой интегрированной среде(или вообще без неё)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.09.2018, 13:13
Цитата Сообщение от paradohs Посмотреть сообщение
Что я сделал не так?
Добавь в проект файл second.cpp, куда подключи first.cpp
C++
1
#include "first.cpp"
0
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
26.09.2018, 13:20
Danyoka, Привет! Разбить свой проект на файлы (логические части) - идея хорошая, но для этого лучше использовать header файлы (иначе *.h), вот неплохая ссылочка, тут все написано для первого ознакомления https://ravesli.com/urok-21-zagolovochnye-fajly/
Удачи!
1
1 / 1 / 0
Регистрация: 24.04.2017
Сообщений: 15
26.09.2018, 13:48
сперва у меня зависла среда на этапе сборки)
но после сделал более приемлемый код: если автору темы необходимо больше включенных файлов(first.cpp, second.cpp, third.cpp, ...) правда я не знаю, как они будут связаны. Один из примеров:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#//first.cpp
#include <iostream>
void func2(void);//объявление функции, чтобы использовать ниже
void func1(void){
    //something
    std::cout<<"No error1!\n";
}
void func3(void){
    //something
    std::cout<<"No error3!\n";
    func2();//а именно вот тут
}
C++
1
2
3
4
5
6
7
8
9
10
11
//second.cpp
#include "first.cpp"//включение как того требовал Kastaneda
void func2(void){
    //something
    std::cout<<"No error2!\n";
}
void func4(void){
    //something
    std::cout<<"No error4!\n";
    func1();
}
C++
1
2
3
4
5
6
7
8
9
10
11
//main.cpp
#include "second.cpp"
int main()
{
    std::cout << "start the program\n";
    //do something
    func3();
    func4();
    //do something else
    return 0;
}
PS. Уважаемый, Kastaneda, если вы категорически против данной реализации, прошу указать как привести код в приемлемый для вас вид.
0
7 / 4 / 2
Регистрация: 23.09.2018
Сообщений: 17
26.09.2018, 14:40
Да просто добавьте свои файлы в файл проекта (*.pro). А затем в main.cpp, где нибудь в начале напишите eternal-описания.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//main.cpp
#include <iostream>
 
external void func1(void);
external void func2(void); // и т.п.
 
int main()
{
    std::cout << "start the program\n";
    //do something
    func1();
    //do something else
    return 0;
}
Добавлено через 1 минуту
eternal external.

Добавлено через 1 минуту
Тфу. Косячу.
C
1
2
extern void func1(void);
extern void func2(void); // и т.п.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.09.2018, 14:42
Цитата Сообщение от paradohs Посмотреть сообщение
Уважаемый, Kastaneda, если вы категорически против данной реализации, прошу указать как привести код в приемлемый для вас вид.
Я лишь пытался указать на то, что инклюдить .cpp файлы - это плохо. Нужно созадавать .h файлы, содержащие объявления фукнций, и инклюдить их.

Но при этом если в .h засунуть определение функции, то можно столкнуться с описанной выше проблемой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2018, 14:42
Помогаю со студенческими работами здесь

Перечислимые типы в разных файлах проекта
Написал прогу: 1.срр - основной файл 2.h - файл с объявлениями функций 2.срр - файл с описанием функций я создаю перечислимый...

Связка двух функций в разных .cpp файлах
Извиняюсь если тема поднималась, может я плохо искал но не нашел вразумительного объяснения связывания двух функций через заголовочный...

Как расположить шаблонный класс в разных файлах?
Есть некоторый класс A, он размещен в разных файлах так: main.cpp : #include &lt;iostream&gt; #include &quot;a.h&quot; int main() { ...

Как изменить значения одного параметра в разных файлах
Задача простенькая, но я далек от программирования и всем что связано с этим. Дело вот в чем, есть у меня папка, в этой папке файлы,...

Не могу использовать класс в классе, определённые в разных файлах
Есть значит у меня два файла с классами в visual studio. Первый : #include &quot;Email.h&quot; #include &quot;Folder.h&quot; using...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru