Dawidh
07-01-2008, 12:01
Ciao a tutti, allora devo fare un progetto per scuola e in pratica devo modularizzare un unico file in cpp di 4000 righe di codice (e senza file .h) dividendolo in più file cpp e mettergli i relativi file h.
File .h
...
struct drive { // Drive su un canale ATA
bool presente;
bool dma;
unsigned int tot_sett;
partizione* part;
};
...
e fin qui tutto bene, anzi una cosa ma è giusto mettere le struct nei file h e soprattutto va bene scriverle cosi'?
Il problema mi si presenta con alcune struct:
// descrittore di swap
struct des_swap {
short channel; // canale: 0 = primario, 1 = secondario
short drive; // dispositivo: 0 = master, 1 = slave
partizione* part; // partizione all'interno del dispositivo
bm_t free; // bitmap dei blocchi liberi
superblock_t sb; // contenuto del superblocco
} swap; // c'e' un unico oggetto swap
in questo caso la struct des_swap ha già il nome swap e qunado compilo mi restituisce questo errore:
/home/davide/Os2/nucleo/sistema/libreria.cpp:20: multiple definition of `_swap'
sistema/sist_cpp.o:/home/davide/Os2/nucleo/sistema/sistema.cpp:81: first defined here
Ho anche provato a mettere la struct nel file c e dichiararla extern nel file h (tipo: extern struct swap;) ma niente.
Non essendo molto esperto chiedo aiuto a voi.. come posso risolvere?
Grazie!!!!!
File .h
...
struct drive { // Drive su un canale ATA
bool presente;
bool dma;
unsigned int tot_sett;
partizione* part;
};
...
e fin qui tutto bene, anzi una cosa ma è giusto mettere le struct nei file h e soprattutto va bene scriverle cosi'?
Il problema mi si presenta con alcune struct:
// descrittore di swap
struct des_swap {
short channel; // canale: 0 = primario, 1 = secondario
short drive; // dispositivo: 0 = master, 1 = slave
partizione* part; // partizione all'interno del dispositivo
bm_t free; // bitmap dei blocchi liberi
superblock_t sb; // contenuto del superblocco
} swap; // c'e' un unico oggetto swap
in questo caso la struct des_swap ha già il nome swap e qunado compilo mi restituisce questo errore:
/home/davide/Os2/nucleo/sistema/libreria.cpp:20: multiple definition of `_swap'
sistema/sist_cpp.o:/home/davide/Os2/nucleo/sistema/sistema.cpp:81: first defined here
Ho anche provato a mettere la struct nel file c e dichiararla extern nel file h (tipo: extern struct swap;) ma niente.
Non essendo molto esperto chiedo aiuto a voi.. come posso risolvere?
Grazie!!!!!