|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
[C] È possibile?
È possibile dichiarare una variabile in un file C e renderla accessibile in sola lettura ai file che non sono quello in cui è stata dichiarata?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Proprio no, eh?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9455
|
La dichiari come 'final' e, poi, negli altri file fai riferimento ad essa dichiarandola come extern.
Credo che dovrebbe "funzionare"...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Potresti sempre dichiararla static all'intern o di una funzione e poi usare quella funzione per leggerla. qualcosa di tipo: Codice:
int getValore () {
static int valore = 9;
return valore;
}
ciao |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Con le funzioni per la memoria condivisa non va bene? O devi scrivere in ANSI C?
Guardati le funzioni shmget, shmat, shmctl e shmdt. Il problema e' che se la vuoi accedere da un processo 'non imparentato' con quello in cui dichiari la porzione di mem condivisa, per agganciarla allo spazio di indirizzi di tale processo devi usare la stessa chiave (il parametro key di shmget) usata nel processo che ha creato la variabile condivisa... Ciao |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Hmm... veramente forse potrei risolvere (parzialmente) col metodo di VICIUS, anche se non mi sembra la soluzione migliore. Spiego: ho un file C che contiene delle variabili usate praticamente da tutte le sue funzioni, e che devono essere modificabili da queste. Cercavo, però, un metodo per renderle in sola lettura per i file che le importano. Magari c'è qualche directive che posso impostare nell'header? Mah.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Per comprendere io meglio la tua domanda, intendi qualcosa tipo il Private che si utilizza in C++ ?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2004
Città: Acireale
Messaggi: 447
|
Non è che ha molto senso quello che stai facendo.
Quote:
pattern come quello dei file in C. I file in C utilizzano la struttura FILE, per memorizzare delle variabili utilizzate dalle funzioni che permettono di accedere ad un file. Poi utilizzano delle funzioni di inizializzazione e distruzione come fopen e fclose per creare e distruggere lo "spazio" di variabili utilizzato dalle funzioni che utilizzeranno FILE. Per accedere al file tramite la struttura FILE invece utilizzano la collezione di funzioni fwrite, fread, feof, fseek, ecc..... Lo so che non è la soluzione ideale per "proteggere" le variabili globali, ma rende l'operazione di modifica più complessa. Saluti.
__________________
Ho concluso acquisti e/o vendite con : SHIVA>>LuR<<, TheGaiden, ArvMau |
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
scusa, ma normalmente come fai ad utilizzare in un file sorgente C una variabile dichiarata in un altro file sorgente? la dichiari in un header come extern?
imho non esiste modo di fare quello che dici; a parte il fatto che se vuoi evitare modifiche alla variabile, semplicemente... non modificarla! Codice:
int nVar;
.
.
.
int GetValue() {
return nVar;
}
Codice:
static int nVar;
.
.
.
int GetValue () { ecc.
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be', la soluzione in effetti può essere proprio quella di VICIUS e 71104, anche se è poco elegante e un po' scomoda. Infatti dopo diverse lotte sono riuscito a far funzionare di nuovo il mio sistemino operativo (una schifezza, era meglio se lo lasciavo morire
Ho capito, insomma: non è possibile, almeno non normalmente. Grazie comunque a tutti! Bye
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Al contrario...se, come in questo caso, la funzione è minima ci dovrebbe essere una semplice mov al posto di una call...
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:40.



















