Warum können wir nicht deklarieren Sie eine statische variable innerhalb einer Struktur in der Programmiersprache C?
Warum können wir nicht deklarieren Sie eine statische variable innerhalb einer Struktur in der Programmiersprache C?
- Da die ISO-C-standard sagt, dass Sie nicht. Aber wenn Sie sagen, warum Sie denken, Sie brauchen, könnte es möglich sein, einen workaround für was auch immer es sein werde.
- Auch in C++ gibt es keine solche Sache wie ein
static
variable innerhalb einer Struktur. Diese sindstatic
Mitglieder, und es ist wirklich schade, dass C++ überlastungen derstatic
Stichwort für einen weiteren völlig unterschiedlichen semantischen. Insbesondere bedeutet es das Gegenteil vonstatic
im Datei-oder Funktionsbereich, nämlich ein symbol, das weltweit sichtbar. Ich sehe wirklich nicht, jede Nutzung, die. Wenn Sie gefragt hätte fürextern
könnte dies Sinn machen, in C, aber das wäre eine andere Geschichte. static
im Funktionsumfang bedeutet, dass alle Aufrufe der Funktion teilen sich die gleiche Instanz einer variable. Ebensostatic
in einer Klasse bedeutet, dass alle Instanzen der Klasse teilen sich die gleiche Instanz des Feldes. Mir scheint, dass die Wiederverwendung ist hier das Stichwort perfekt, sehr motiviert.- Ich habe nicht gesagt, dass es nicht motiviert, es ist einfach nur bedauerlich. So etwas wie
common
,global
was auch immer, wäre angemessener gewesen. Und die Geschichte beginnt bereits in C mit den beiden verschiedenen Bedeutungen (Datei vs. Funktionsumfang), und weiter in C99 mit der Verwendung vonstatic
für eine untere Schranke für die array-Größe in function-Parameter. All dies ist unnötig kompliziert die Sprache durch das hinzufügen von Kontext-Sensitivität zu keywords.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C++ ein struct ist im Grunde eine Klasse mit allen Mitgliedern der öffentlichkeit, also eine statische variable macht guten Sinn gibt.
In C eine struct ist ein zusammenhängender Speicherblock mit Feldern. Eine statische variable kann nicht erstellt werden, ohne zu ändern, dass (wie implementieren Sie eine statische, die Sie brauchen, um sich auf einen einzigen Speicherbereich von allen Strukturen dieses Typs), und das wäre ein großer Unterschied in der Komplexität, ohne viel nutzen.
Weil C ist nicht C++.
Da der C-standard erlaubt es nicht.
Weil es keine sinnvolle interpretation im C.
Weil in c können wir nicht Zugriff auf statische variable mit Stuktur Namen.
In c++ können wir Zugriff auf statische member-variable mit dem Klassennamen,wie im Bild unten gezeigt.
ClassName::staticVariableName
'C' Stuktur nicht bieten, eine solche Anlage.