Ciao a tutti,
sto facendo un programma piuttosto complesso in C e mi sto incartando con la compilazione, mi perdo nei meandri degli include e dei vari file header, tenendo conto che ci sono variabili globali lì definite.
hO FATTO FVARI TENTATIV E MI SEMBRA CHE QUESTA SIA LA PIù GIUSTA, MA EVIDENTEMENTE NON LO P

Faccio uno schema di come sono le mie variabili e le mie funzioni, e come ho diviso la dichiarazione e l'inizializzazione nei vari file:

file UNO.c :
codice:
//UNO.c

#include "VARIABILE.h"
#include "DUE.h"
#include "TRE.h"


extern int GLOB;          //è definita e inizializzata in VARIABILE.h
extern int A, B;              //sono definite e inizializzate in DUE.h
extern struct flock L1, L2;           // sono definite e inizializzate in TRE.h
file DUE.c :
codice:
//DUE.c

#include "VARIABILE.h"
#include "DUE.h"

int A, B;               //sono definite e inizializzate in DUE.h 
extern int GLOB;              //è definita e inizializzata in VARIABILE.h
file TRE.c :
codice:
//TRE.c

#include "DUE.h"

struct flock L1, L2;      // sono definite e inizializzate in TRE.h
file DUE.h :
codice:
//DUE.h

#ifndef DUE_H
#define DUE_H

int A = 0; 
int B = 0;

#endif
file TRE.h :
codice:
//TRE.h

#ifndef TRE_H
#define TRE_H

struct flock L1 = {F_RDLCK, SEEK_SET, 0, 0};
struct flock L2 = {F_WRLCK, SEEK_SET, 0, 0};

#endif
file VARIABILE.h :
//VARIABILE.h
codice:
//VARIABILE.h

#ifndef VARIABILE_H
#define VARIABILE_H

int GLOB = 0;

#endif

l'errore del compilatore è chiaro, le variabili vengono definite più volte quindi sto chiaramente sbagliando qualcosa con le disposizioni delle variabili deni vari header e relativa dichiarazione all'interno degli header e .c.

quetso è l'output di compilazione :

codice:
UNO.o(.bss+0x0): multiple definition of `VARIABILE'
DUE.o(.bss+0x0): first defined here
UNO.o(.bss+0x4): multiple definition of `L1'
TRE.o(.bss+0x0): first defined here
UNO.o(.data+0x0): multiple definition of `L2'
TRE.o(.data+0x0): first defined here
UNO.o(.bss+0x14): multiple definition of `A'
DUE.o(.bss+0x4): first defined here
UNO.o(.bss+0x18): multiple definition of `B'
DUE.o(.bss+0x8): first defined here

Se potete dirmi come disporre le varie cose mi sareste di grande aiuto e se qualcuno mi spiega più in generale dove vanno dichiarate le variabili globali per permettere a vari ".c" di usufruirne, mi fareste ancora più felice


Grazie in anticipo