Datei Scope und Global Scope: C & C++
Ich bin ein student, und ich bin verwirrt über die Globale und Datei-Gültigkeitsbereich von Variablen in C und C++.
Gibt es Unterschiede in den beiden Perspektiven? Wenn ja, erläutern Sie bitte im detail.
- drdobbs.com/cpp/scope-regions-in-c/240002006
- Eine ähnliche Frage wurde hier beantwortet, möchten Sie vielleicht werfen Sie einen Blick stackoverflow.com/questions/14027317/...
- Ich möchte dich bitten nicht für den Unterschied zwischen b/c, die in Ihrer Frage erwähnen, die ich überprüft haben, dass die Beispiele, die Werke desselben in C++ für die Datei und die Globale Reichweite, das ist, warum ich diese Frage gestellt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Variablen mit Datei-Gültigkeitsbereich zugegriffen werden kann, durch eine Funktion oder block in einer einzigen Datei. Deklarieren Sie eine Datei als Gültigkeitsbereich variable, deklarieren Sie einfach eine variable außerhalb eines Blocks (wie eine Globale variable), sondern verwenden Sie das Schlüsselwort static.
Datei-Gültigkeitsbereich von Variablen fungieren genau wie Globale Variablen, außer Ihre Verwendung beschränkt sich auf die Datei, in der Sie deklariert sind.
Einen Namen hat
file scope
wenn der Bezeichner der Deklaration außerhalb jedes Blocks. Ein name mit Datei-Gültigkeitsbereich und die interne Verlinkung ist sichtbar von dem Punkt, wo es wird erklärt, dass das Ende der übersetzungseinheit.Global scope
oderglobal namespace scope
ist die äußerste namespace-Gültigkeitsbereich eines Programms, in dem Objekte, - Funktionen, - Typen und-Vorlagen definiert werden können. Einen Namen hat der Globale namespace-Gültigkeitsbereich, wenn der Bezeichner der Deklaration außerhalb aller Blöcke, namespaces und Klassen.Beispiel:
Lesen Sie mehr hier.
Ist es vielleicht deutlicher zu veranschaulichen-Datei (translation unit)-Rahmen vs globalen Bereich, wenn es tatsächlich mehrere übersetzungseinheiten...
Nehmen Sie 2 Dateien (jeweils als eigene übersetzungseinheit, da Sie nicht über einander)
other.cpp
main.cpp
Daher der Unterschied ist klar.
Datei Umfang: Alle Namen deklariert werden, die außerhalb aller Blöcke oder Klassen-Datei Umfang. Es ist überall zugänglich in der übersetzungseinheit nach seiner Erklärung. Namen mit Datei-Bereich, nicht erklären, statische Objekte werden oft als Globale Namen.
In C++, Datei-Umfang ist auch bekannt als namespace-Gültigkeitsbereich.
Lesen Sie diese sorgfältig nun.
Nutzen Sie #include<'...'.h> - Anweisungen am Anfang von deinem Programm/code.
Was Sie tatsächlich tun, es sagt dem computer, um beziehen sich auf die Funktionen vorgefertigte in diesen *h*eader-Dateien.Das heißt, die Funktionen haben, die Datei Bereich.Sie donot schreiben Sie den code von printf scanf und Funktionen wie diese cauz Sie sind irgendwo in den header-Dateien.
Deklarierte Variablen außerhalb einer Funktion "file scope", das heißt, Sie sind sichtbar, innerhalb der Datei. Deklarierte Variablen mit Datei-Gültigkeitsbereich sichtbar zwischen Ihrer Erklärung und das Ende der compilation-unit (.c-Datei) und Sie implizit haben externe Bindung und sind somit sichtbar, um nicht nur die .c-Datei oder Zusammenstellung Einheit, die Ihre Erklärungen, aber auch jede andere Zusammenstellung Einheit verknüpft ist, zu bilden, das komplette Programm.
Globale Variablen können, wie der name schon sagt, als weltweit zugreifbar werden(überall)