Concetti Chiave
- Il riutilizzo degli identificatori dipende dal namespace e dallo scope nel linguaggio C.
- Nello stesso scope, lo stesso identificatore può essere usato in namespace diversi.
- In scope diversi, un identificatore può essere riutilizzato se dichiarato in uno scope più esterno, ma viene mascherato localmente.
- Il C suddivide gli identificatori in namespace come tag di struct, campi di struct, label per goto, e identificatori di variabili e funzioni.
- Le classi di visibilità degli identificatori includono livello di file, funzione, prototipo di funzione e blocco.
Riutilizzo degli identificatori
Le regole che ci consentono di riusare un identificatore in un programma dipendono dallo namespace e dallo scope degli identificatori. Infatti secondo le regole utilizzate nel linguaggio di programmazione del C:
- Non si riusa lo stesso identificatore nello stesso namespace e scope
- Nello stesso scope, si può usare lo stesso identificatore se questo e usato in namespace diversi
- In scope diversi, si può usare lo stesso identificatore dichiarato in qualche scope pià esterno, quello più interno maschera localmente quello esterno
Lo Namespace (spazio dei nomi) è l’insieme di classi in cui sono suddivisi i tipi di identificatore, in C le classi di namespace sono:
- tag di struct, union e enum
- campi di struct e union, in cui ognuno ha un namespace diverso
- label per il goto
- identificatori di variabili, funzioni, costanti enumerative e tipi
- (macro e argomenti delle macro)
Un identificatore, come le variabili e visibile nella regione di programma in cui dichiarato, ci sono quindi quattro classi di visibilità, ovvero la parte di codice in cui è valido il riferimento tra nome della variabile e indirizzo di memoria
- A livello di file
- A livello di funzione (le label sono gli unici con visibilita a livello di funzione)
- A livello di prototipo di funzione
- A livello di blocco