[Tech] header C
Llewlyn
lewlin@prato.linux.it
Mer 31 Dic 2003 13:50:07 CET
On Wednesday 31 December 2003 11:12, Valerio Montagnani wrote:
> Se al contrario
> uso la direttiva include con i nomi dei moduli con estenzione .c , funziona
> tutto.
>
> Che cosa sto sbagliando?
Non sbagli niente, infatti devi "dire" al compilatore che ci sono altri
file .c di cui ha bisogno, però ci sono diversi modi x "dirglielo", non
necessariamente includendo il codice con una direttiva.
Per esempio, supponiamo main.c come file principale, e mod1.c mod1.h come
primo modulino e mod2.c mod2.h come secondo.
Ogni file modx.c ha una direttiva iniziale che include il suo header,
contenente definizioni e ogni altra roba che serve, basta lanciare un
gcc main.c mod1.c mod2.c
Per compilare la funzione main utilizzando tutte le subroutines (e altro)
presenti nei vari files.
Oppure potresti scrivere un makefile per organizzare in modo ordinato le
dipendenze, ad esempio:
--------------------- cut ---------------------------
all : main.o mod1.o mod2.o
gcc -o app main.o mod1.o mod2.o
main : main.c
gcc main.c -o main.o
mod1 : mod1.c mod1.h
gcc mod1.c -o mod1.o
mod2 : mod2.c mod2.h
gcc mod2.c -o mod2.o
--------------------- cut ---------------------------
In questo modo compili singolarmente ciascun file sorgente, dopodichè generi
l'applicazione usando i vari file oggetto. La sintassi è del tipo
target : dependency dependency
command
command
[...]
Per capire come scrivere efficacemente makefile cmq, vai sul GNU Make Manual
(ing) http://www.gnu.org/manual/make-3.79.1/html_chapter/make_toc.html
---
Tommaso
Maggiori informazioni sulla lista
flug-tech