|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.12.2012, 16:41 | #1 |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
Многофайловый проект (С++)
Огромная просьба помочь:
Написал программку для вывода в табличном виде значений заданной функции. Обязательное условие: расчёт через отдельную функцию и многофайловость проекта. При компановке всего кода в один файл все прекрасно работало. Далее разбил на 2 файла .срр и файл .h: В заголовочный файл вставил все дерективы подпроцессора, инициализацию переменных и объявление функции ( double F (double) ) В остальных файлах вместо всех деректив и объявлений только подключение этого заголовочного файла. В итоге при запуске выдается ошибка: "error lnk2005: "double a" уже определен в коде code1.obj" и далее так по всем переменным. Ошибку указывает в файле с функцией. листинг файлов: head.h [CODE] //Заголовочный файл #include <iostream> #include <locale> #include <math.h> using namespace std; double a, x, y, Xstart=10.00, Xend=19.00, dx=1.50; // Инициализация переменных double F(double); [CODE] func.cpp [CODE] // функция рассчета F(x) #include "head.h" double F(double y) //Обьявление финкции F(x) { y=0.7*(3*a*x+1/(a*log10(x))); return y; } [CODE] code1.cpp [CODE] // Исходный кд с функцией mail и условием задачи: // задана функция y=0,7(3ax+1/a*lnx) Xнач10, Xкон=19, dX 1.5 // Вычислить таблицу значений функции y=F(x) для значений аргумента x, // изменяющегося в интервале от Xнач до Xкон c шагом dx. // Для вычисления функции использовать собственную функцию, // т.е. ввести функцию пользователя F(x). #include "head.h" void main () { setlocale (LC_ALL,"Russian");// подключение вывода русского языка cout << "Для рассчета функции вида y=0,7(3ax+1/a*lnx) введите перемнную а: \n"; cin >> a; cout << "\tx\t|y=F(x)\n"; for(x=Xstart; x<=Xend; x++) { F(y); cout <<"\t"<< x <<"\t|"<<y<<"\n"; } } [CODE] Последний раз редактировалось Faraon9; 11.12.2012 в 17:53. |
11.12.2012, 17:29 | #2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
|
|
11.12.2012, 17:32 | #3 |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
|
11.12.2012, 18:49 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
научитесь отличать объявление от инициализации
|
11.12.2012, 19:02 | #5 |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
|
11.12.2012, 19:26 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
переменный в h обьявляем через extern
Код:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
11.12.2012, 20:02 | #7 | |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
Цитата:
поставил extern к трем постоянным (Хнач, Хкон и дх) и все равно ошибка: идетификаторы а, х, у уже определены в осн.срр, если externставить ко всем переменным- ошибка: неразрешенные идентификаторы |
|
11.12.2012, 20:12 | #8 |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
все же, огромная просьба указать на ошибки:
head.h Код:
Код:
Код:
Ошибка 1 error LNK2005: "double a" (?a@@3NA) уже определен в code1.obj D:\C++\LAB1ttp\osnoma\func.obj Ошибка 2 error LNK2005: "double x" (?x@@3NA) уже определен в code1.obj D:\C++\LAB1ttp\osnoma\func.obj Ошибка 3 error LNK2005: "double y" (?y@@3NA) уже определен в code1.obj D:\C++\LAB1ttp\osnoma\func.obj При этом если все собирать в один файл- все работает без ошибок. |
11.12.2012, 21:57 | #9 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Привет, Faraon9
Видимо, вот эту строку: Код:
Код:
|
11.12.2012, 22:45 | #10 | |
Пользователь
Регистрация: 08.12.2012
Сообщений: 18
|
Цитата:
но я это пробывал, и возникает проблема:все равно где-то в файлах должна быть строка без extern-а, как я понимаю попытка дбавить ее с code1.cpp приводит к тому, чт компилятор вообще отказывется работать и отправляет проверять его настройки. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где найти исходники на Java( 1 проект - больше 1000 классов, 2 проект - больше 100, 3 проект - больше 10) | Pti44ka | Общие вопросы по Java, Java SE, Kotlin | 2 | 09.09.2010 21:31 |
Проект на C# | senokos | Фриланс | 8 | 11.03.2010 21:23 |
(C++) Многофайловый проект/раздельная компиляция | Troi666 | Помощь студентам | 8 | 06.06.2009 23:59 |
Проект на C# | Etlau | Помощь студентам | 1 | 07.04.2009 22:10 |