Newsgroup: it.comp.lang.c
Titolo: usare le variabili statiche come parametri

è possibile utilizzare le variabili statiche per passare informazioni
tra due funzioni indipendenti, evitando l'uso di parametri?
leggendo, ad esempio, qui:
http://www.cs.cf.ac.uk/Dave/C/node4.html#SECTION00441000000000000000
io capisco che una variabile statica conserva il proprio stato tra una
chiamata e l'altra della stessa funzione.
allora ho provato a prendere due funzioni A e B, contenute in due due
sorgenti diversi dello stesso programma e ho usato una terza funzione
C, in un terzo sorgente per passare dalla prima alla seconda il valore
di una variabile statica contenuta dentro C.
nel mio esperimento, il giochetto non funziona.
quale può essere il motivo?
ci sono tecniche alternative per ottenere lo stesso risultato, di far
comunicare A e B senza definire un parametro di scambio?

 comunicare A e B senza definire un parametro di scambio?
variabile globale?
Ciao Jack

 comunicare A e B senza definire un parametro di scambio?
Variabili globali.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >


grazie. ma sarebbe impossibile. troppo caos.
comunque ho risolto il mio problema:
se vuoi passare una variabile da A a B in quel modo, devi chiamare A
prima di B e non viceversa.
vi ringrazio. la vostra pazienza nel rispondere mi è utile, in quanto
mi aiuta a separare la mia insicurezza nella gestione del codice dal
problema di capire il congengo con cui funziona il prgramma che sto
cercando di modificare.

 tra due funzioni indipendenti, evitando l'uso di parametri?
Č possibile, ma non ci sono vantaggi a farlo, solo svantaggi. Quindi, č una
cattiva idea.
Max

 Max
eppure, al momento che ho posto la domanda, mi sembrava l'unica
soluzione possibile.
ma oramai ho concluso il lavoro di cui mi ero occupato e posso quindi
spiegare esplicitamente ciò che sto facendo.
probabilmente, infatti, la questione non è del tutto banale, e
potrebbe interessarvi più delle cose che ho domandato fino ad ora.
il programma dove volevo mettere le mani è gdm, il window manager di
gnome, ma non ci ho lavorato esclusivamente di testa mia, bensì sotto
la tutela paterna e comprensiva del mainteiner (Brian Cameron).
con lui ho avuto uno stretto colloquio, al termine del quale lui mi ha
chiesto di postare sulla gdm-list, per discutere aperatemente i
problemi che ho posto:
http://mail.gnome.org/archives/gdm-list/2008-June/msg00000.html
ora, la routine A del mio problema era il parser (gui/greeter/
greeter_parser.c), mentre la routine B era la
greeter_item_session_setup(), dentro il file gui/greeter/
greeter_session.c
le due funzioni non comunicavano tra di loro ed erano molto lontane,
per cui era difficile geneare una successione di parametri che le
mettesse in comunicazione.
così ho pensato (di testa mia, non accusate di tutto il povero Brian)
al trucco del file C, ma dopo aver penato notevolmente a costruirlo,
ho scoperto con sorpresa che il puntatore trasmesso era nullo.
a quel punto ho testato la trasmissione nella direzione opposta, con
un accrocchio di quattro istruzioni apposta e ho capito che il
diagramma di flusso del programma si sviluppava nel modo
diametralmente opposto a quello che pensavo. La cosa non è ovvia,
perché a prima vista leggendo il programma principale (greeter.c) non
sembrerebbe così.
tuttavia, ho deciso di attenermi ala mia indagine empirica e ho
chiesto al mainteiner di applicare una patch sporca che eviti
manipolazioni troppo profonde del programma originario.
sono curioso di vedere come andranno le cose.
grazie a tutti per il supporto.