Другие языки программирования и технологии

Вопрос по СИ (внутри)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "modul.c"
main()
{
return 0;
}
Это основная программа.
Создаю отдельный модуль в нем создаю функцию:

float func1(float x)
{
float cl=0,y=0,e=0.000001;
int j=0;
cl=x;
j=3;
do
{
y=y+cl;
cl=-cl*x*j/(j+5);
j=j+4;
} while(fabs(cl)>e);
return y;
}
компилю, пишет ошибку в модуле modul.c : multiple definition of "func1" line 5
first defined here line 5
Получается я несколько раз обьявил функцию func1 но я то ее обьявил один раз, что нге так?
Создай modul.h, с объявлением функции:
------------------------
float func1(float x);
------------------------

В главном файле:
------------------------
#include <conio.h>
#include "modul.h"
main()
...
------------------------

Или просто удали modul.c из проекта.

Update:
> это ты мне про с++ пишешь а у меня си, тут модули подключаются сразу с .c
Идиоты может и сразу .с подключают.
Поэтому у них функция получается определенной два раза.

> #include <stdio.h>
> #include <stdlib.h>
> #include <conio.h>
Вот же заголовочные файлы подключены. Не верь глазам своим?

Если хочешь таки оставить #include "module.c", то это я для кого писал:
Или просто удали modul.c из проекта.
Если ты компилируешь из командной строки (работаешь без IDE) и делаешь примерно так:
gcc main.c module.c -o myprog

То вместо этого надо просто:
gcc main.c -o myprog

Почитай, как работает препроцессор языка и глупости больше не пиши.
Андрей Усатов
Андрей Усатов
66 912
Лучший ответ
Запомни раз и навсегда: тут нет телепатов, а если ты врешь - то от этого хуже будет только тебе.
Ты привел не весь файл modul.c, в 5-й строчке того, что ты привел нету func1. Давай весь файл.
Да, и к вопросу "включать c или h, на c или c++" - c и c++ дают замечательные возможности для быдлокодерства, вроде включения в файл другого. Хороший тон - добавлять только заголовки, но никакого отношения к тому, C это или C++, нет.
походу она у тебя табуляцией далеко вправо ушла ИМХО
Ivan Grozniy
Ivan Grozniy
372