No ... la testa mi girava per la spiegazione di cui non ho capito quasi nulla ...Originariamente inviato da Manugal
Il fatto è che non mostro tutto il codice perché poi ti girerebbe ancora di più la testa.
Tutto il codice non serve.
E questo e', secondo me sbagliato.Originariamente inviato da Manugal
Le funzioni si trovano in due files separati.
Quella variabile cntOpenDatabases è dichiarata come static in un file .h incluso da entrambe le funzioni ed è inizializzata a -1.
Nei file include non si definiscono le variabili.
Queste si definiscono in un file sorgente e poi si dichiarano come extern negli altri.
Quindi la OpenDatabase aumenta il numero e la CloseDatabase lo diminuisce.Originariamente inviato da Manugal
A me questa variabile serve perché mi conta i databases che sono stati aperti, però nel momento in cui ne chiudo uno il valore di questa variabile deve diminuire di 1.
E questo e' quello che vuoi ...Originariamente inviato da Manugal
Il problema (cioè non è un vero e proprio problema perché una variabile static si comporta così) che si presenta è che se chiamo la OpenDatabaseFile il valore di cntOpenDatabases va a 0 (perché questa funzione lo incrementa).
E anche questo e' quello che vuoi ...Originariamente inviato da Manugal
Subito dopo chiamo CloseDatabaseFile e questa funzione mi decrementa questa variabile.
Prova a dichiarare la variabile, come ti ho detto, in un solo modulo sorgente (non nell'include) e come extern nell'altro ...Originariamente inviato da Manugal
Ora se io richiamo OpenDatabaseFile il valore di quella variabile, dopo l'incremento, è 1, mentre io voglio che sia 0 (perché è stata decrementata da CloseDatabaseFile). Spero di essere stato chiaro.
P.S. Due osservazioni ... nel primo esempio avevi scritto
cntOpenDatabases=cntDat;
ma questo non lo ritrovo nella CloseDatabase ...
E alla fine della CloseDatabase scrivi
return LPC_OK;
putchar('\n');
in cui, ovviamente, l'ultima istruzione non verra' mai eseguita.