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 :
file DUE.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 TRE.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 DUE.h :codice://TRE.c #include "DUE.h" struct flock L1, L2; // sono definite e inizializzate in TRE.h
file TRE.h :codice://DUE.h #ifndef DUE_H #define DUE_H int A = 0; int B = 0; #endif
file VARIABILE.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
//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



Rispondi quotando