|
07.12.2011, 14:42
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Вызов функций
double cos(double c){ double x=c; if(x>PI*2)x-=PI*2; int N = 2*20; double mx2 = -x*x; int i; double part = 1, sum = 1; for (i = 2; i < N; i+=2) { part *= mx2/((i-1)*i); sum += part; } return sum; } //синус,из косинуса double sin(double x){return cos(((PI/2.0)-x));}
Почему если вынести этот код в отдельный исходник,то sin перестаёт работать(машина виснит на нём)?а если в main.c,то всё нормально?
|
(Offline)
|
|
07.12.2011, 15:43
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вызов функций
отдельный исходник в отдельном проекте, в котором double cos(double) определено как
double cos(double n)
{
while(1)
{
}
}
|
???
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
|
07.12.2011, 16:14
|
#3
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вызов функций
Сообщение от HolyDel
отдельный исходник в отдельном проекте, в котором double cos(double) определено как
???
|
Что?
|
(Offline)
|
|
07.12.2011, 16:24
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вызов функций
ну исходя из твоего описания проблемы я смог стелепатировать только это. уточняй проблему. описывай подробнее. линкеру пофигу в каком файле твоя функция.
|
(Offline)
|
|
07.12.2011, 16:36
|
#5
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вызов функций
Может заголовок для этого файла не подключен к текущему?
|
(Offline)
|
|
07.12.2011, 16:48
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вызов функций
func.cpp
#include <cassert>
double func1(double val)
{
return val+1;
}
double func1(int val)
{
assert(0);
return val+1;
}
main.cpp
#include <iostream>
#define USE_INT_FUNCTION
double func1(int);
#ifdef USE_INT_FUNCTION
double func2(double val)
{
return func1(val-1);
}
#endif
double func1(double);
#ifndef USE_INT_FUNCTION
double func2(double val)
{
return func1(val-1);
}
#endif
int main()
{
std::cout<<func2(0.5)<<std::endl;
std::cin.get();
}
вот еще один пример - в зависимости от того, закоментирован дефайн или нет, оно или падает или нет.
|
(Offline)
|
|
07.12.2011, 18:40
|
#7
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Вызов функций
все объявления funс1 пеоенеси в начало, это вопервых самомуже не удобно наверное и походк на ассерте падает
|
(Offline)
|
|
07.12.2011, 19:27
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Вызов функций
я показывал автору, почему перемещение функции из одного места в другое может изменить логику программы. и да, падает стопудово на ассерте
|
(Offline)
|
|
08.12.2011, 10:11
|
#9
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: Вызов функций
Сообщение от HolyDel
я показывал автору, почему перемещение функции из одного места в другое может изменить логику программы. и да, падает стопудово на ассерте
|
я протупил, думал ты спрашиваешь ))))
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:06.
|