Как в Stm32CubeIDE добавить свои файлы
При попытке добавить свой файл с функциями и сделать include в main.c - вылезает ошибка. Как будто оно его два раза импорит...
// ошибка
prog.c:1: multiple definition of `loop'
prog.c:1: first defined here
.
// main.c
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "../Src/prog.c"
/* USER CODE END Includes */
.
// prog.c
void loop() {
}
Ответы (1 шт):
Автор решения: maestro
→ Ссылка
Когда вы запускаете компилятор, он компилирует каждый c-файл по отдельности: сначала main.c, потом prog.c. Директива #include выполняет простую подстановку одного файла в другой: в вашем случае всё содержимое файла prog.c попадает в файл main.c. Таким образом у вас действительно оказываются две одинаковые функции: одна в файле main.c, другая в файле prog.c.
Вам нужно создать дополнительный файл prog.h, в нём прописать прототип функции loop:
void loop();
и подключать в main уже его. При этом не забывайте про защиту от множественного включения:
//prog.h
#ifndef PROG_H
#define PROG_H
void loop();
#endif
// prog.c
#include "prog.h"
void loop() {
}