Ich habe ein Projekt, das erfordert "Erstellen einer konstanten Variablen mit einem unbenannten Namespace", und ich muss es mit Funktionen in einer anderen CPP-Datei teilen. Es besagt, dass die Variablendeklarationen in einer eigenen Datei sein könnten. Die Verwendung des externen Schlüsselwortes wurde erwähnt, und ich fand heraus, wie man extern verwendet, die var in einer Header-Datei und like extern const char varname;
deklariert, ihm einen Wert in meiner main.cpp zugewiesen, (const char varname = A;
global über der Hauptfunktion) und konnte Verwenden Sie es in der anderen CPP-Datei. Aber ich bin nicht sicher, wie man einen unbenannten Namensraum benutzt. In einer Beispieldatei haben sie die folgend in der Hauptdatei:externe Konstante, unbenannter Namespace
namespace
{
extern const double time = 2.0;
}
Aber es gibt jetzt Beispiel dafür, wie das für den Zugriff auf in einer anderen CPP-Datei. Ich habe versucht, das mit meiner Variable zu tun, und ich bekomme einen Fehler in der anderen Datei, wo ich versuche, es zu verwenden, sagend, dass es nicht in diesem Bereich erklärt wird.
Kann mir jemand einen Einblick geben, was ich hier tun soll, um diese beiden Dinge zu nutzen?
Ich glaube nicht, dass Sie Ihre Aufgabe verstehen. Der Punkt der Verwendung von unbenanntem Namespace besteht darin, dass Funktionen und Variablen, die darin definiert sind, ** nicht ** aus anderen CPP-Dateien sichtbar sind (oder, um den richtigen Ausdruck zu verwenden, Übersetzungseinheiten). – SergeyA
Der Auftrag wie gesagt scheint ein Widerspruch in sich zu sein. Die Elemente im unbenannten Namespace können nicht mit anderen Übersetzungseinheiten benannt werden. Ich nehme an, Sie könnten eine andere Datei mit '#include" otherfile.cpp "' im 'originalfile.cpp' Code" teilen ", aber das ist wirklich Betrug. –
Hmm. Nun, es heißt, die Konstante mit dem unbenannten Namespace zu deklarieren, dass ich sie mit den anderen Funktionen teilen muss, und dass sie nicht als Referenz übergeben werden kann. Und es empfiehlt ausdrücklich, extern zu verwenden. Also ja, ich bin mir nicht sicher, was es will. – windy401