C-Entwickler verwenden seit langem das Schlüsselwort „static“ in Übersetzungseinheiten, um die Sichtbarkeit von Symbolen zu steuern. Diese Praxis führte jedoch zu einer Ablehnung in n3092, gefolgt von ihrer Entfernung in n3225.
Die Ablehnung von „static“ zielte darauf ab, seine Verwendung zum Deklarieren von Objekten im Namespace-Bereich zu unterbinden , da der unbenannte Namespace eine bevorzugte Alternative darstellte. Das Problem bei der Verfolgung von C-Defekten offenbart jedoch einen differenzierten Grund für diese Änderung.
In Revision 94 der C Standard Core Language Defect Reports wurde das Problem (1012. Undeprecating static ) erklärt Folgendes:
Obwohl in 7.3.1.1 [namespace.unnamed] angegeben ist, dass die Verwendung des Schlüsselworts static zum Deklarieren von Variablen im Namespace-Bereich veraltet ist, da der unbenannte Namespace eine überlegene Alternative darstellt, ist es unwahrscheinlich, dass die Funktion wird in absehbarer Zukunft jederzeit entfernt.
Dieses Update macht die veraltete Funktion effektiv rückgängig. „Static“ bleibt ein gültiges Schlüsselwort für die Deklaration von Funktionen und Objekten mit interner Verknüpfung. Sein Hauptvorteil liegt in seiner Kürze und dem Fehlen zusätzlicher Standardcodes im Vergleich zur Verwendung unbenannter Namespaces.
Die ursprüngliche Ablehnung zielte darauf ab, die Einhaltung von C-Standards durch C zu verbessern , da C den unbenannten Namespace nicht erkennt. Die Entscheidung, die Ablehnung aufzuheben, erkennt jedoch die realen Komplexitäten des Kompilierens von C-Programmen als C an.
Die Ablehnung von „static“ war vielleicht gut gemeint, aber ihre Entfernung spiegelt die Erkenntnis wider, dass unbenannte Namespaces den Nutzen von „static“ für die Deklaration von Objekten mit interner Verknüpfung nicht vollständig ersetzen. Daher können Entwickler „statisch“ weiterhin bedenkenlos verwenden, da seine Präsenz im C-Standard wahrscheinlich nicht so schnell verschwinden wird.
Das obige ist der detaillierte Inhalt vonIst das Schlüsselwort „static' in C wirklich veraltet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!