0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
1

Создание cpp файлов

24.07.2010, 15:39. Показов 12830. Ответов 18
Метки нет (Все метки)

я недавно начал зучать язык программированя С++ и делаю это самостоятельно с помашю книг и интернета. я ищю статьи где было бы подробно описанно для каких функции какие файли создаються например для написания простого математического задания можно использовать файл .cpp, я так понимаю но у меня и с этим тоже проблемы, недавно я открыл "project", в ней файл .срр но когда я в этом же проекте создал второй .срр файл то после нажатия клавиш ctrl+F5 вывело ошибку
"Ошибка 1 error LNK2005: _main уже определен в sd.obj ars.obj arsen"
"Ошибка 3 fatal error LNK1169: обнаружен многократно определенный символ - один или более C:\Documents and Settings\user\My Documents\Visual Studio 2008\Projects\arsen\Debug\arsen.exe 1 arsen
"

если кто то понял вчем дело буду очень признателень если даст мне совет.

выходит что в одном проекте должен быть только один .срр файл??? (я думаю что такое невозможно в таком грамадном программе, наверника я что то не допонимаю, но что именно надеюсь что помогите узнать!)

если обяснение этого слишком длинна можете просто посоветовать ссылки где я могу найти ответы на вопросы такого рода.

заранее спасибо всем кто поможет
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2010, 15:39
Ответы с готовыми решениями:

Подключение файлов main.cpp some.cpp some.h
Всем привет, программа разделенна на три файла poly.cpp main.cpp poly.h Кто мог бы объяснить как...

Сравнение файлов C++ .cpp и .h по средствам представления .cs файлов в C#
Доброго времени суток. Я немало времени потратил на C#. Сейчас изучаю литературу по С++ и не могу...

Обращение файлов cpp
Всем привет! Изображу наглядно код: main.cpp #include <iostream> using namespace std; void...

Компиляция .cpp-файлов из программы
Доброго времени суток! Имеется VS 2013 и .cpp файлы. Задача - написать свою программу, которая...

18
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
24.07.2010, 16:07 2
cpp может быть сколько угодно.У вас проблемы с функцией int main();
main Должна быть одна в ней запускается ваш код.
0
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
24.07.2010, 16:15  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    int var1;   //arajin popoxakan
    int var2;   //erkrord popoxakan
    var1 = 10;
    var2 = var1 + 10;
    cout << "var2 = var1 + 10 = " << var2 << endl;  // var2-i dursberum
    return 0;
}
если я написал такую программу и еще один файл добовляю а вней тоже есть

C++
1
2
3
4
5
#include <iostream>
using namespace std;
 
int main()
{..................}
то всегда выдаст эту ошибку? может я должен создать какой то файл где я напишу

C++
1
2
3
4
5
#include <iostream>
using namespace std;
 
int main()
{
ЭТУ ЧАСТЬ а в остальних срр файлах просто тело программы тоесть то что в кобках функции main
так будет правильно???




Извините если вопросы ОЧЕНЬ "ТУПЫЕ"
0
1551 / 917 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
24.07.2010, 16:36 4
Вам же сказали, основная функция, она же main (), должна быть описана один раз.
1
8 / 8 / 2
Регистрация: 13.07.2010
Сообщений: 14
24.07.2010, 17:03 5

Не по теме:

Да нет, arsstyleh, не тупые :)



Определитесь сначала, для чего вам новый *.cpp файл? Зачем тело программы куда-то переносить? Если программа очень большая, то ее можно разбивать на подпрограммы, которые в свою очередь можно вынести в другие *.cpp файлы.

Ну если очень хочется, вот тебе пример, разбирайся.
Есть основной файл <Имя программы>.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "MyMath.h"
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x,y,sum;
 
    cin >> x;
    cin >> y;
 
    sum = Summ(x,y);
    cout << sum << endl;
 
    system("PAUSE");
    return 0;
}
Подпрограмма Summ(x,y) вызывается в <Имя программы>.cpp, но она определена в MyMath.cpp
MyMath.h - это заголовочный файл для MyMath.cpp, в нем прототип функции описан.

MyMath.h:
C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
 
#ifndef _math
#define _math
 
int Summ(int a,int b);
 
#endif
MyMath.cpp:
C++
1
2
3
4
5
6
7
#include "MyMath.h"
 
int Summ(int a,int b)
{   
    int r = a+b;
    return r;
}
2
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
24.07.2010, 21:57  [ТС] 6
Lonely_Romantic Спасибо, ваш ответ был понятливее...
0
Эксперт С++
2343 / 1716 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.07.2010, 22:19 7
arsstyleh, изучайте литературу последовательно, тогда проблем не будет. Главное литературу правильно подобрать.
0
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
24.07.2010, 22:30  [ТС] 8
CyBOSSeR я вообщето искал литературу по этому принципу: чтобы было как можно больше страниц, потому что много книг изучал и пришел к выводу что чем больше страниц тем подробнее все написанно о программе. насшет "изучайте литературу последовательно" я с самого начала книги читаю и в полне внимательно, там просто не написанны подробности про то как создать файли как они должны быт распаложены, и если человек скажем создал один срр файл после чего захотел второй пример с книги написать в отдельном файле, там не сказанно что нужно создать файл и потом в каждом новом срр просто вызывать этот файл где написанно функция майн. (принцып как я понял такой же как и в php программировании где строятся например header, footer, потом при помощи include визываются эти файли.
А сейчась под рукой есть книга Х.М.Дейтел, П.Дж. Дейтел четвертое издание "как программировать на С++" и еше книга скачанная из сайта
 Комментарий модератора 
ссылки на подобные сайты запрещены. Правила форума п. 3.10
автор: Р. Лафоре "обьектно ориентированное программирование в С++" 4-е издание.

Если кто то может мне посоветовать литературу которую считает лучше чем эти, буду признателен.
0
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
25.07.2010, 15:22 9
arsstyleh, Дейтла тебе пока что вполне хватит в ооп пока что не лезь, никуда не торопись, делай все последовательно, разбирай что делает каждая строчка... можешь почитать вот эти уроки по С/С++ там подробные примеры с комментариями
0
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
25.07.2010, 18:56  [ТС] 10
Mur3ik а я с самого начала какраз и изучаю думаю если коректно не пойму как должны создоватьса срр файли и проекты то врядли стоит стремится дальше так и не пробовая узнать. просто тут не так как в 2005 версии, там можно было в одном проекте создовать несколько срр файлов и в каждом были написанны
C++
1
2
3
4
5
6
#include <iostream>
using ...
int main()
{
...
}

и не приводило ошибки будто майн употреблен несколько раз, видимо в компиляторе или как эта часть называется не знаю ну вот там наверно что то изменили усовершенствовали и вот результат для навычка
0
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
25.07.2010, 19:22 11
arsstyleh, вы ошибаетесь. 2005 и 2008 одинаково не воспринимают функцию main в разных cpp файлах одного проекта. Другое дело, что то, о чем вы говорите, может быть тогда все остальные файлы должны были быть вручную выгружены из проекта и подключен только один cpp-файл с функцией main и выгруженные файлы попросту в таком случае не компилируются и не имеют никакого отношения к проекту
1
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
25.07.2010, 19:47  [ТС] 12
Цитата Сообщение от arsstyleh Посмотреть сообщение
просто тут не так как в 2005 версии, там можно было в одном проекте создовать несколько срр файлов
извините но помоему я тже имел ввиду что 2005 и 2008 версии отличаются. или все же не прав был????
0
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
25.07.2010, 20:13 13
arsstyleh, я не писал что они отличаются, я написал вот что
Цитата Сообщение от M128K145 Посмотреть сообщение
2005 и 2008 одинаково не воспринимают функцию main в разных cpp файлах одного проекта
2008 и 2005 относительно вашего вопроса абсолютно одинаковы.
1
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
25.07.2010, 20:23 14
в принципе можно держать несколько файлов с функцией майн в одном проекте, это даже удобно для проверки разных частей программы. но активным должен быть только один файл с главной функцией. из компиляции можно исключать cpp и h файлы нажав на них правой кнопкой мышь - properties - general - excluded from build
1
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
25.07.2010, 20:28 15
Mur3ik, это написано в 11 посте
1
Evg
Эксперт CАвтор FAQ
21264 / 8280 / 637
Регистрация: 30.03.2009
Сообщений: 22,635
Записей в блоге: 30
25.07.2010, 23:00 16
Господа, по-моему его интересует следующее. У человека есть проект в VS2008. Он хочет добавить к проекту ещё один файл *.cpp. Его интересует, куда в IDE надо нажать, чтобы добавить (потому как для IDE такое действие не совсем тривиально)

Ну и как-то надо доступно объяснить, что после создания нового файла вовсе не нужно туда копировать код main'а. И при нормельном создании нового файла проекта он (файл) должен быть пустым (т.е. не содержать никакого заранее сгенерённого текста)
1
0 / 0 / 0
Регистрация: 24.07.2010
Сообщений: 16
25.07.2010, 23:09  [ТС] 17
Evg тебе спосибо за присоединение и всем за советы, кажется я не смог излогать понятнее то что мне интересовало, но уже нашел очень полезные материалы на сйте http://msdn.microsoft.com/ru-r... 35627.aspx
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11650 / 7162 / 1701
Регистрация: 25.07.2009
Сообщений: 13,123
26.07.2010, 03:23 18
Цитата Сообщение от M128K145 Посмотреть сообщение
2008 и 2005 относительно вашего вопроса абсолютно одинаковы.
Мало того - ни один компилятор не скомпилирует вместе два файла, в которых определена функция с одним и тем же именем.
0
Evg
Эксперт CАвтор FAQ
21264 / 8280 / 637
Регистрация: 30.03.2009
Сообщений: 22,635
Записей в блоге: 30
26.07.2010, 11:11 19
Цитата Сообщение от easybudda Посмотреть сообщение
Мало того - ни один компилятор не скомпилирует вместе два файла, в которых определена функция с одним и тем же именем.
У него по ходу дела формировалась статическая библиотека. В юниксе, по крайней мере, такое точно бы прошло (просто ни один файл из библиотеки не попал бы в линковку, т.к. не снаружи не имеет нужных UNDEF'ов). Если под виндами принцип построения статической библиотеки такой же, том там тоже пройдёт
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2010, 11:11
Помогаю со студенческими работами здесь

Правильное подключение .h и .cpp файлов
Доброго времени уважаемые форумчане. Я совсем зеленый в плюсах, не бейте пожалуйста сильно. ...

Несколько cpp файлов в проекте
Доброго времени суток ! Есть проект и в нем 2 cpp файла: Main.cpp и BinaryNumber.cpp В...

Условное подключение cpp файлов
Здравствуйте,я вот захотел сделать в своей программе выбор языка,но увеличивать программу на кучу...

Архитектура размещения h и cpp файлов
Доброго времени суток! Есть библа, содержащая ряд функций. Допустим, func1, func2 и ещё over 10....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru