ошибки при добавление структуры с __attribute__ в .h файл

Добавил в заголовочный файл следующие определение структуры:

typedef struct {
    float   data[32];
    int     size;
}Mcalc;

Mcalc MCALC __attribute__((section(".DIO")));

компилятор выдает следующие ошибки:

multiple definition of `MCALC'
first defined here
multiple definition of `MCALC'
first defined here

Как можно решить данную проблему ?


Ответы (1 шт):

Автор решения: AlexGlebe

В заголовочном файле делаете только предварительное объявление переменной с помощью extern. Без никаких атрибутов.

att.h :

typedef struct {
    float   data[32];
    int     size;
}Mcalc;

extern  Mcalc MCALC ;

А в одном из файлов реализацию.

att.c :

# include "att.h"
Mcalc MCALC __attribute__((section(".DIO")));

main.c :

# include "att.h"
int main(){
  MCALC = ( Mcalc ) { .size = 0 , .data = { 0 } };
}
→ Ссылка