Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dividere il programma in Header File e Source File
Forum - C/C++ - Dividere il programma in Header File e Source File

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 18:56
Sabato, 09/09/2017
Ho diviso il mio programma in diversi Header File con i rispettivi Source File, tutti collegati tra loro con le #include, unico problema è che le costanti e i tipi di dato sono stato costretto a copiarli in ogni Source File perchè altrimenti le funzioni presenti nei Source File non potevano vedere le costanti e i tipi di dato. Qualcuno mi sa dire perchè? E' possibile trovare un modo più elegante per non copiare tutte le costanti e i tipi di dato in ogni Source File?
Come IDE uso Eclipse per C
Grazie

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 19:20
Sabato, 09/09/2017
Scrivi un header file che contenga le strutture comuni e includilo dove serve.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 19:39
Sabato, 09/09/2017
fai un esempio di queste costanti e tipi di dato?

ci sono variabili che modifichi in più sorgenti?

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 19:47
Sabato, 09/09/2017
Testo quotato

Postato originariamente da lumo:

Scrivi un header file che contenga le strutture comuni e includilo dove serve.



Ma quindi vanno nei Heard File o nei Source File?

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 19:48
Sabato, 09/09/2017
Testo quotato

Postato originariamente da Mikelius:

fai un esempio di queste costanti e tipi di dato?

ci sono variabili che modifichi in più sorgenti?



Allora per costanti sono le solite costanti che definisco con #define mentre si ci sono delle variabili globali, 2 per l'esattezza

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 20:41
Sabato, 09/09/2017
Le #define mettile in un header. Includendolo includi tutti i #define in esso.
Per la variabili: dichiarale in tutti i sorgenti con la key extern , e definiscile in uno solo normalmente.
se li metti dentro un header potresti avere un errore di compilazione (variabile già definita)

PM Quote
Avatar
perillitommaso (Normal User)
Pro


Messaggi: 186
Iscritto: 28/01/2014

Segnala al moderatore
Postato alle 20:50
Sabato, 09/09/2017
Testo quotato

Postato originariamente da Mikelius:

Le #define mettile in un header. Includendolo includi tutti i #define in esso.
Per la variabili: dichiarale in tutti i sorgenti con la key extern , e definiscile in uno solo normalmente.
se li metti dentro un header potresti avere un errore di compilazione (variabile già definita)



Allora ho fatto come mi hai detto, ho messo le struct e le costanti in un nuovo Header file che ho chiamato strutture.h e ho incluso tale header file in tutti i source file; nello stesso header file ho messo le variabili globali e non mi ha dato nessun problem
Posso stare sicuro?

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 21:00
Sabato, 09/09/2017
no, se non mostri il codice... non posso sapere come hai implementato ogni cosa..

Comunque le variabili mettile dentro i file .c (avevo scritto sorgenti per indicare i source file) con la key extern .. e dentro uno solo di essi definiscile (assegna un valore) senza la key extern...

PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:16
Sabato, 09/09/2017
Ricordo d'aver letto che si può anche (non si deve) definire una variabile globale con l'attributo extern direttamente in un file di intestazione, a patto di dichiararla e inizializzarla in uno qualsiasi dei file di implementazione che includano il file di intestazione stesso.

Ad esempio, potrei definire la variabile...

extern int gPincoPalla;

...nel file mia_intestazione.h, quindi dichiarare la variabile...

int gPincoPalla = 24;

...nel file mia_implementazione.c che include il file mia_intestazione.h.

La stessa variabile si può anche utilizzare (senza nessun ulteriore "richiamo" esplicito) anche nei file mio_secondo_file.c e mio_terzo_file.c, a patto che entrambi includano mia_intestazione.h.

Ho già provato a fare diverse volte qualcosa del genere ed è sempre filato tutto liscio come l'olio. E' davvero pratico.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo