Diese Frage steht in direktem Zusammenhang mit diesem . Betrachten Sie den Code:
%Vor% Es zeigt 10
an. Wenn ich die Deklaration extern int x;
lösche, erhalten wir einen Mehrdeutigkeits-Compiler-Zeitfehler
Fehler: Verweis auf 'x' ist mehrdeutig
Frage: Warum funktioniert der Code mit der Deklaration von extern int x
und warum hört er auf zu arbeiten, wenn ich ihn entferne? Liegt es daran, dass Inline-Namespace-Variablen eine interne Verknüpfung haben?
Nein, der Code funktioniert, weil, um den bestehenden C-Code nicht zu zerstören, extern int x;
in c in der gleichen Weise funktionieren muss, also ein lokales extern
zu einem globalen Namespace erzeugt (das war alles, was wir in C hatten) ) Variable. Dann, wenn Sie es später verwenden, entfernt das lokal deklarierte Extern eine mögliche Mehrdeutigkeit.