Как в 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() {

}
→ Ссылка