Gibt es einen Unterschied in diesen beiden? Wenn ja, was genau ist der Unterschied? Angenommen, sie befinden sich in einer C-Funktion, die mehrmals aufgerufen werden kann.mit statischem Schlüsselwort in C lokalen Bereich zu funktionieren
declare und weist in derselben Anweisung
static uint32_t value = x;
// x varies and may be passed into function.
declare in einer Anweisung und in der nächsten statment zuweisen.
static uint32_t value
;value = x; // x varies
;
Ist value
aktualisiert nur das erste Mal, es wird erklärt/initialisiert oder auch bei nachfolgenden Aufrufen.
Mein Verständnis von (1) ist, dass es nur das erste Mal gesetzt wird, dass Linie so ausgeführt wird, selbst wenn x
das nächste Mal die Linie ändert, wird value
das selbe bleiben. Ich bin mir nicht sicher über (2) aber Klärung auf beiden wird sehr hilfreich sein
EDIT: Compiler ARM (ADS1.20). EDIT: Eine Follow-up-Frage zu (2) aus den bisher gegebenen Antworten. Wird die Erklärung (nicht die Zuordnung) bei jedem Anruf oder nur beim ersten Mal wiederholt?
Da Sie in Ihrer Frage ziemlich klar machen, dass Ihr Code in C ist, entfernte ich das C++ - Tag. Diese Sprachen sind nicht gleich und die Antwort auf Ihre Frage hängt stark davon ab, welche Sie verwenden. –
nein ich denke, er spricht über C++. in C 1.) ist nicht möglich. oder ... nun, ich bin mir auch nicht sicher. Wenn man sich die Antworten ansieht, nehmen sie es alle, da der Fragesteller einen Fehler gemacht hat mit 1). Lass uns warten, was MeThinks sagt –
Der einzige Ort, der C++ erwähnte, war das C++ - Tag (jetzt entfernt). Der Fragetitel und -körper sagten beide "C" und erwähnen C++ nicht. –