Newsgroup: it.comp.lang.c
Titolo: [NEWBIE] 2 domandine..

Salve a tutti,
                           ecco 2 banali cosette che sicuramente sarete in
grado di svelarmi:
1) Immagino esista una funzione 'modulo' (quella funzione matematica che
restituisce il valore assoluto di un numero 'col segno') qual'č?
2) Ho scritto un programma piuttosto lungo e complesso (molte variabili e
molte funzioni all'interno). Mi hanno consigliato di 'dividere' il file .c
in almeno 3 o 4 files .c contenenti le principali sezioni: il problema č che
spesso sono funzioni che gestiscono variabili comuni (globali) e (per questo
se il programma e scritto su di un solo file .c non ci sono problemi). Come
posso gestire le diverse funzioni localmente (cioč nei nuovi files .c)
richiamando le variabili globali? Devo definire di volta in volta dei
vettori e dei puntatori dai files creati al file principale??
Spero di essere stato chiaro, resto a disposizione per chiarimenti, grazie a
tutti per il vostro tempo.
M D



(Uso MSVC6.0).
M D




God, I ask for patience -- and I want it right now!


Grazie innanzitutto per il tuo intervento!
Tutto chiaro, solo che quello che mi serve è ora la modalità con cui
riferire dal file originale alla funzione 'trasferita' nel nuovo file .c. Mi
spiego:
-avevo (e naturalmente ho ancora in copia di backup) un unico grande file .c
chiamiamolo father.c;
-ho trasferito col cut&paste alcune delle funzioni che mi interessano in
altrettanti
nuovi files .c (son1.c son2.c etc. [ovviamente con nomi meno idioti]);
-ho sistemato questi ultimi inserendo nelle intestazioni le chiamate alle
librerie (#include....) e alle variabili locali(int..; float..; etc..) e
globali (extern etc);
-Ecco il problema: ora che tutto è ok sui vari son*.c (che vengono infatti
compilati senza problemi)  come chiamo la/e funzione/i presenti nei nuovi
files dal programma father.c??? la chiamata originale infatti
'nomedellafunzione(variabili);' provoca l'ovvio warning con la segnalazione
dell'assenza della stessa nel file.c e l'avviso "assuming external..." che
però VC6.0 non individua in uno dei son*.c, malgrado questi siano aggiunti e
compilati nello stesso project...
Come posso fare? Ti ringrazio per la disponibilità e la tanta pazienza...
A presto
M D


se hai delle variabili globali presenti in un file sorgente
per fare in modo che siano visibili in  un altro file sorgente basta
che aggiungi la parola chiave extern prima della definizione
di una funzione.
Per esempio:
extern int ciao;
void pippo()
{
ciao=2;
/****/
}
In questo caso la variabile ciao e' la stessa variabile
globale ciao che e' stata  definita in un altro sorgente .
Ciao.
Fab.
Sent via Deja.com 
http://www.deja.com/
Before you buy.

Grazie per il tuo aiuto.
Sapresti dirmi come fare a chiamare una funzione trasferita in un nuovo file
.c da quello d'origine?
Grazie ancora per il tuo tempo.
M D

 M D
Prepara un header "father.h" in cui listi i prototipi delle
funzioni
implementate nei vari son*.c e le variabili globali.
Poi lo includi in father.c
L'uso dell'header serve ad evitare di riscrivere ogni volta
la lista
se usi le funzioni anche in altri programmi; in caso
contrario puoi
inserire la lista direttamente in father.c prima di main.
Alla prossima

A presto


,

Puoi farlo nel solito modo ;
ricordati, inoltre, che tutti i files sorgente vanno compilati
e i relativi files oggetto (.o) vanno linkati al programma
(puoi fare tutto questo (compilazioni e link) , in maniera semplice,
tramite un makefile
o tramite l'impostazione di un progetto (mediante, per esempio, rhide)).
