So che static
è una parola chiave sovraccaricata in C. Qui, sono interessato solo al suo utilizzo come parola chiave per applicare il collegamento interno.Collegamento interno con parola chiave statica in C
Se si dispone di una variabile globale dichiarata in un file .c
, qual è la differenza tra l'utilizzo di static
e non l'uso di static
? In entrambi i casi, nessun altro file .c
ha accesso alla variabile, quindi la variabile è fondamentalmente "privata" nel file, con o senza la parola chiave static.
Per esempio, se ho un file foo.c
, e ho dichiarare una variabile globale:
int x = 5;
quella variabile x
è disponibile solo per il codice all'interno foo.c
(a meno che naturalmente dichiaro in qualche condiviso file di intestazione con la parola chiave extern
). Ma se non lo dichiaro in un file di intestazione, quale sarebbe la differenza se dovessi digitare:
static int x = 5
.
In entrambi i casi, sembra che x
abbia il collegamento interno qui. Quindi sono confuso sullo scopo di static
a questo proposito.
Hai quasi risposto alla tua domanda - hai detto "se non lo dichiaro in un file di intestazione", che significa "se non scrivo una dichiarazione con la parola chiave extern". Il punto è che è * impossibile * scrivere una tale dichiarazione se hai dichiarato la tua variabile statica, mentre se non lo hai, qualcun altro potrebbe venire e farlo, collegare al tuo codice e avere accesso alla tua variabile. (Come cita Pascal Cuoq.) – Cascabel
possibile duplicato di [Cosa significa "statico" in un programma C?] (Http://stackoverflow.com/questions/572547/what-does-static-mean-in- ac-programma). in particolare, mi rivolgo a questo caso nella mia risposta: http://stackoverflow.com/a/14339047/895245 –