Rileggendo il codice di qualcun altro, ho visto qualcosa sintatticamente simile a questo:Perché dichiarare una variabile statica in main?
int main(void) {
static int attr[] = {FOO, BAR, BAZ, 0};
/* ... */
}
È questo un errore o c'è qualche ragione per dichiarare una variabile in main
static
? A quanto ho capito, static
impedisce il collegamento e mantiene il valore tra le chiamate. Perché qui è all'interno di una funzione fa solo il secondo, ma main
viene invocato solo una volta, quindi non vedo il punto. Questo modifica alcuni comportamenti di compilazione (ad esempio impedendone l'ottimizzazione dall'esistenza)?
IIRC Le variabili 'static' sono posizionate in una sezione diversa. Vedi anche qui: http://stackoverflow.com/questions/93039/where-are-static-variables-stored-in-cc –
sebbene questa sia probabilmente una cattiva pratica ma, formalmente, chi impedisce a te (oa qualcun altro) di chiamare 'main' in modo ricorsivo (più avanti nel codice)? – mvidelgauz
'static' indica che la variabile non è allocata nello stack (memorizzata nel segmento dati o nel segmento BSS). – Rotem