Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Sto cercando di capire come funziona il make ma non ne vengo fuori...
Ad esempio ho tre file .c, contenente il main e i corpi delle funzioni, ed un solo header file, contenente i prototipi di tutte le funzioni e qualcos'altro.
Dal main, in file1.c, chiamo una funzione, presente il file2.c. Da quest'ultima funzione ne chiamo un'altra in file3.c...
Dopo aver dato make pero' ottengo i classici errori "undefined reference to..."
Nel makefile scrivo qualcosa tipo:
make guida solo l'ordine con cui esegui i vari comandi non ne sa niente delle dipendenze c (infatti può essere usato per qualsiasi compito non solo la compilazione).
quindi se hai messo tutte le dichiarazioni di funzioni in header.h devi includere questo header nei vari file[1,2,3].c e scrivere il make così:
programma : file1.o file2.o file3.o
cc -o programma file1.o file2.o file3.o
file1.o :
cc file1.c -o file1.o
file2.o :
cc file2.c -o file2.o
file3.o :
cc file3.c -o file3.o
se ottieni un errore non è make che sbaglia ma il compilatore, quindi guarda nell'output di make chi sta sbagliando ed esegui il comando a mano, sistema l'errore e poi riprova a far girare make
The quiet ones are the ones who change the world. The loud ones only take the credit.
puzuma ha scritto:
quindi se hai messo tutte le dichiarazioni di funzioni in header.h devi includere questo header nei vari file[1,2,3].c e scrivere il make così:
E' quello che ho fatto, ma make continua a dire "undefined reference to ..."
Invece se provo a compilare così:
Ok aggiungendo il flag -c compila, grazie.
Già che ci sono colgo l'occasione per chiedere un parere sul metodo di scrittura del codice...Come ho scritto prima capita nel sorgente di rimbalzare da un file all'altro; ad esempio la funzione x nel primo file chiama la funzione y del secondo. Questa a sua volta chiama altre funzioni, magari in altri files...E' una cattiva pratica di programmazione la mia ?