über anderem Code Lesen jemand, sah ich etwas syntaktisch ähnlich wie diese:Warum deklarieren Sie eine statische Variable in main?
int main(void) {
static int attr[] = {FOO, BAR, BAZ, 0};
/* ... */
}
Ist das ein Fehler oder ist es aus irgendeinem Grund eine Variable in main
static
zu erklären? Wie ich es verstehe static
verhindert Verknüpfung und behält den Wert zwischen den Aufrufen. Weil es hier in einer Funktion ist, tut es nur Letzteres, aber main
wird nur einmal aufgerufen, so dass ich den Punkt nicht sehe. Ändert dies das Kompilierungsverhalten (z. B. verhindert es, dass es nicht mehr existiert)?
IIRC 'statische' Variablen werden in einem anderen Abschnitt platziert. Siehe auch hier: http://stackoverflow.com/questions/93039/where-are-static-variables-stored-in-cc –
obwohl dies wahrscheinlich schlechte Praxis ist, aber, formal, wer verhindert, dass Sie (oder jemand anderes) anrufen 'main' rekursiv (später im Code)? – mvidelgauz
'static' bedeutet, dass die Variable nicht im Stack zugeordnet ist (im Datensegment oder im BSS-Segment gespeichert). – Rotem