Newsgroup: it.comp.programmare
Titolo: Divisione di un programma in più file sorgenti e header file

Ciao a tutti!
Sono un novellino della programmazione in C, quindi non mi frustate, please! ;-)
Devo sostenere un esame di informatica per la facoltà di ingegneria elettronica, ed ho compiuto già notevoli progressi 
rispetto agli esordi, ma ogni tanto arriva qualche scoglio che non riesco a superare.
Allora... veniamo al punto. Come da subject, devo suddividere un programma in diversi file sorgenti. Mi sarà necessario 
per svolgere la tesina di fine corso.
Non sono sicuro di aver capito perfettamente il funzionamento degli header file, e gli header file presenti con il 
compilatore sono decisamente troppo complicati perché riesca a comprenderli pienamente.
Come prima prova ho aperto un programma di mia realizzazione, perfettamente funzionante e scritto su un unico file.
Ecco schematicamente il file che contiene il main:
#include <stdio.h>
#include <string.h>
#include "presskey.h"
seguono i prototipi e i define
void main(void)
{
  ...
}
Dopo di esso abbiamo il file presskey.h, che consiste della sola riga
void tasto(void);  /* chiede la pressione di un tasto (per fare una pausa) */
infine abbiamo il file presskey.c
#include <stdio.h>
void tasto(void)  /* chiede la pressione di un tasto (per fare una pausa) */
{
  printf("\n\t-- Premi un tasto per proseguire --");
  getch();
}
Eccoci arrivati. Come potete vedere non mi sono complicato inutilmente la vita, ho solamente cercato di mettere su file 
separato una funzione che uso spesso.
Sto usando il compilatore gratuito Borland Turbo C++ v 1.01 e quando provo a compilare il file sorgente che contiene il 
main, mi risponde:
Linker Error: Undefined symbol _tasto in module ESER_1B.C
Onestamente non so che pesci pigliare, e i testi a mia disposizione sembrerebbero indicare che nei miei file non vi siano 
problemi. Il programma è funzionante, visto che mettendo il prototipo di tasto() al posto giusto, e rimettendo a posto la 
funzione, tutto procede come dovrebbe.
Eventualmente, dove posso trovare qualcosa che spieghi dettagliatamente come lavorare con diversi file sorgente?



solitamente nel tuo caso appare quando viene richiamata una funzione non
ancora dichiarata. Forse l'errore potrebbe essere che includi il file in una
parte del listato sbagliata, e non prima del codice che ne fa utilizzo.
Ricorda di definire sempre i prototipi delle funzioni che impieghi in altri
file. Fammi sapere se il prob. era questo


Come dice il messaggio stesso questo e' un errore del Linker, cioe'
stai cercando di generare l'eseguibile dal solo file eser_1b.C.
se vuoi solo compilare, usa: tcc -c nomefile
altrimenti (non so se con TC 1.0 funziona) devi specificare ambedue i
file nella riga di comando:
tcc eser_1b presskey
ciao
donCiccio

Grazie delle risposte!
Allora... Il programma era corretto! Tutte le dichiarazioni erano al posto giusto, e non c'erano ripetizioni.
Il suggerimento di usare il comando TCC è stato efficace, ed è stato generato un eseguibile perfettamente funzionante.
Purtroppo però dall'editor continua a darmi quel fastidioso problema. Ho provato a cercare il modo di creare un project 
dal menu "project", ma l'unica voce attiva è "open project".
Grazie tante... come cavolo creo un nuovo progetto però? Questo resta un mistero... :-)
Se quella fosse la soluzione del problema, sapete come si crea un project?


una sola curiosità, che compilatore usate?

 ha scritto nel messaggio
news:1104_990989690@patricko...

Menu' project
selezioni open
dai un nome che vuoi (che poi sara' il nome dell'eseguibile)
lui apre una finestra nuova
nella finestra nuova selezioni aggiungi (tasto INS o dal menu' project ->
Add item)
inserisci i tuoi file
ciao
donCiccio
PS
purtroppo il TC 1.0 non me lo ricordo bene, ma +o- e' come te l'ho descritto

purtroppo il TC 1.0 non me lo ricordo bene, ma +o- e' come te l'ho descritto
confermo... é la stessa procedura anche in TC 3.
Però vi consiglierei di aggiornarvi... tanto + che mi pare che borland
stessa dia gratis i suoi vecchi compilatori...
cod

Se quella fosse la soluzione del problema, sapete come si crea un project?
Prova ad elencare tutti i sorgenti .c in un file PIPPO.PRJ :-)
Leonardo
-- 
".signature": bad command or file name

 stessa dia gratis i suoi vecchi compilatori...
Il compilatore nuovo c'è, ma non è dotato di editor. Visto che sono alle prime armi, mi sembra più che sufficiente il Turbo 
C++ 1.01, che è disponibile nella sezione "museum" del sito 
www.borland.com
.
Le versioni più recenti invece non ci sono.
Piuttosto mi sembra interessante il Bloodshed C++, che è un ambiente di sviluppo open source, ma visto che 
all'università tutti usiamo il TC 1.01, mi sembra normale usarlo per una migliore compatibilità con gli altri, no?

 una sola curiosità, che compilatore usate?
Il Turbo C++ 1.01 Borland, che è gratuito... cosa che non guasta affatto! ;-)
Pur con le sue limitazioni è un ottimo strumento didattico.

 purtroppo il TC 1.0 non me lo ricordo bene, ma +o- e' come te l'ho descritto
Ma cosa dici!? ;-)
Sei un mito: ha funzionato benissimo!
Sono io che ho dato erroneamente per scontato che "open" non potesse aprire un nuovo file.

 Ma cosa dici!? ;-)
La verita'!
Il TC 1.0 lo usavo nel 1988 quando ho iniziato a lavorare, ma gia' nel
1989 c'era il 2.0, e quindi ho solo dei bei ricordi :-)
ciao
donCiccio

Le versioni più recenti invece non ci sono.
hai mai pensato di migrare allora alla versione del Borland C++ 5?
L'IDE non mi sembra un grave problema, perché di IDE che ti permettono
di utilizzare un compilatore particolare ce ne stanno a bizeffe... e
poi non é detto che l'IDE fornito da borland sia il migliore... io ho
la 1.01, la 2 e la 3
cod

Il Turbo C++ 1.01 Borland, che č gratuito... cosa che non guasta affatto! ;-)
visto che si parla di gratuito... posso consigliare l'immensa
produzione opensource per quanto riguarda i sistemi di sviluppo?
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

la 1.01, la 2 e la 3
Ide?... Mi spieghi l'acronimo?
Immagino che si tratti dell'interfaccia, e in tal caso, c'è qualcosa
di freeware per il nuovo compilatore Borland? :-)

IDE :   Integrated Development Environment
CIao
--
-------------------------------------------------------
Maverick
PGP-Key available on Key-server