#include, #define e headers, C

Sep 21, 2012 2 Replies

ciao!



faccio un esempio per spiegare il problema (uso "mpalab x" di microchip con= il compilatore c30 ma credo che sia una questione pi=F9 generica, indipend= ente dal compilatore)



ho un progetto costituito da 10 file sorgenti (.c) pi=F9 il main.c; nel main includo i vari header (.h) dove sono listati i prototipi delle fun= zioni dei relativi sorgenti; nei vari sorgenti e nel main devo mettere sempre queste 2 righe: #define FCY 4000000 #include altrimenti non posso usare le funzioni di ritardo tipo __delay_us()



per evitare di dover aggiornare a mano tutti i vari sorgenti ogni volta che= mi serve cambiare la frequenza di clock, ho fatto un file chiamato setup_f= cy.c in cui ho messo la define (#define FCY 4000000) e cos=EC nei vari sorg= enti posso includere direttamente setup_fcy.c e agire solo su questo per ri= flettere le modifiche al clock



=E8 cos=EC che si fa di norma?



-ice-


Il 21/09/2012 11:46, ice ha scritto:

serve

cambiare la frequenza di clock, ho fatto un file chiamato setup_fcy.c in cui ho messo

la define (#define FCY 4000000) e così nei vari sorgenti posso includere direttamente

setup_fcy.c e agire solo su questo per riflettere le modifiche al clock

Esatto, di norma però file che contengono prototipi e macro hanno l'estensione .h e non .c.

Ciao!

_|/ Francesco Sacchi - Develer S.r.l. |\http://www.develer.com/ - http://www.bertos.org/

Il 21/09/2012 11.46, ice ha scritto:

serve cambiare la frequenza di clock, ho fatto un file chiamato setup_fcy.c in cui ho messo la define (#define FCY 4000000) e così nei vari sorgenti posso includere direttamente setup_fcy.c e agire solo su questo per riflettere le modifiche al clock

Ni. Di solito si fa un file header ( quindi un .h ) che contine tutte le configurazioni necessarie per compilare il programma ( che quindi sono delle define.

Perché hai fatto un .c e sopratutto come lo usi?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required