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

Как в языке программирования СИ осуществлять вызов подпрограммы, которая находится в другом файле?

Изучаю программирование на СИ, и при разборе примеров столкнулся с проблемой: если в одном и том же проекте постоянно писать программы (функции) , то компилятор выдаёт ошибку, "Функция MAIN()" в проекте уже определена.
Как сделать функции, расположенные в других файлах доступными для файла с функцией main().
Постоянно создавать новые проекты я не хочу.
Делать функции видимыми для main() в пределах одного файла я уже умею
достаточно внести данные файлы в проект
Сергей Маслов
Сергей Маслов
89 965
Лучший ответ
В файле с мейном пиши только объвления функций, а определение - в другом .с файле. Также можно вынести определения в хедер и в мейн его инклудить.
Дмитрий Жура
Дмитрий Жура
29 336
Если я правильно Вас понял, Вы хотите чтобы в одном проекте было много-много файлов в каждом из которых будет код своей программы, соответственно своя функция main().

Вообще-то по-моему это не есть хорошо. Лучше выделить для упражнений отдельную папку и в этой папке для каждого упражнения создавать свой проект в отдельной папке, обычна среды программирования сами предлагают сделать так.

Но если почему либо Вам захотелось сделать так, то это по-моему можно сделать с помощью команд препроцессора
#define VAR 1
а затем каждый вариант заключать в #if #endif

#if VAR == 1
#include
int main() { printf("LA LA LA\n");}
#endif

#if VAR == 2
#include
int main() { printf("TU TU TU\n");}
#endif

#if VAR == 3
#include
int main() { printf("VA VA VA\n");}
#endif

Тогда вообще проще использовать один файл на все программы.
А если хотите для каждой програмки отдельный файл, то тогда можно сделать отдельный файл с этим дефайном и включать его вначале каждого файла
-------файл vybor_main.h ----------------
#ifndef VYBOR_MAIN_H
#define VYBOR_MAIN_H
#define VAR 1
#endif
------------------------------------------------
--------файл 1--------------
#include "vybor_main.h"
#if VAR == 1

#include

int main()
{
printf("Hello 1\n");
return 0;
}
#endif
----------------------------------

--------файл 2--------------
#include "vybor_main.h"
#if VAR == 2

#include

int main()
{
printf("Hello 2\n");
return 0;
}
#endif
----------------------------------
Затем меняя в файле с дефайном его параметр, можно будет выбирать нужный файл для компиляции.
Но еще раз повторю, по-моему это не лучший вариант, лучше каждую програмку делать отдельным проектом.

----------------
Кстати, если Вы используете майкрософт визуал студию, то даже в маленьких проектах она создает огромный, десятки мегабайт, файл базы данных sdf. Так можно настроить, чтобы она его не создавала, чтобы место впустую не тратить.
de
den_m80
21 729
#include "имя_файла. h" (пробел после . не нужен)
Hasasha Kucheryavenko
Hasasha Kucheryavenko
15 749