Изучаю программирование на СИ, и при разборе примеров столкнулся с проблемой: если в одном и том же проекте постоянно писать программы (функции) , то компилятор выдаёт ошибку, "Функция MAIN()" в проекте уже определена.
Как сделать функции, расположенные в других файлах доступными для файла с функцией main().
Постоянно создавать новые проекты я не хочу.
Делать функции видимыми для main() в пределах одного файла я уже умею
Другие языки программирования и технологии
Как в языке программирования СИ осуществлять вызов подпрограммы, которая находится в другом файле?
достаточно внести данные файлы в проект
В файле с мейном пиши только объвления функций, а определение - в другом .с файле. Также можно вынести определения в хедер и в мейн его инклудить.
Если я правильно Вас понял, Вы хотите чтобы в одном проекте было много-много файлов в каждом из которых будет код своей программы, соответственно своя функция 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. Так можно настроить, чтобы она его не создавала, чтобы место впустую не тратить.
Вообще-то по-моему это не есть хорошо. Лучше выделить для упражнений отдельную папку и в этой папке для каждого упражнения создавать свой проект в отдельной папке, обычна среды программирования сами предлагают сделать так.
Но если почему либо Вам захотелось сделать так, то это по-моему можно сделать с помощью команд препроцессора
#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. Так можно настроить, чтобы она его не создавала, чтобы место впустую не тратить.
#include "имя_файла. h" (пробел после . не нужен)
Похожие вопросы
- Язык программирования Си
- Как на языке программирования си сделать, чтобы при вводе полного бреда программа не поломалась?
- Ребята, скажите где можно скачать язык программирования Си, без ++
- Помогите пожалуйста решить задачу по программированию (язык программирования СИ)
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Как на языке программирования Си убрать конкретный напечатанный элемент массива или напечатать его в определенном месте?
- Кто знает язык программирования Си++? Можно ли вывести текст по другому?
- Массивы данных на языке программирования СИ.
- Оконное приложение на WinAPI, вопрос про параметры функции WndProc. Язык программирования Си.
- Программирование на языке СИ с использованием подпрограммы-функции