Können Namen in einem anonymen Namespace im globalen Bereich führende Unterstriche enthalten?

8

Je nach Spezifikation sind globale Namen mit führenden Unterstrichen nicht erlaubt:

  

17.4.3.1.2 Globale Namen
  - Jeder Name, der mit einem Unterstrich beginnt, ist für die Implementierung als Name im globalen Namespace reserviert.

Gilt dies auch für Namen, die in einem anonymen Namespace der obersten Ebene definiert sind?

    
StackedCrooked 01.01.2012, 05:49
quelle

2 Antworten

6

Namen, die mit einem führenden Unterstrich gefolgt von einem alphanumerischen Zeichen ohne Großbuchstaben beginnen und keinen doppelten Unterstrich enthalten, sind nur im globalen Namespace reserviert. Der Grund dafür ist, dass auf einigen Systemen bestimmte Namen einen führenden Unterstrich erhalten müssen oder bereits vom zugrunde liegenden Betriebssystem und / oder seiner C-Bibliothek verwendet werden. Namen in einem anonymen Namespace haben dieses Problem nicht.

Das heißt, ich frage mich immer, warum die Leute so scharf darauf sind, hässliche Namen zu benutzen! Wenn ich mich nicht im Standard-Bibliotheks-Implementierungsmodus befinde (wo ich hässliche Namen verwenden muss, damit ich nicht mit Benutzernamen kollidiere), frage ich mich immer, ob ich etwas falsch mache, indem ich irgendwo in meinem Code einen führenden Unterstrich verwende! In seltenen Fällen wird ein führender Unterstrich benötigt (z. B. beim Aufrufen von _exit() oder von std::bind() 's Platzhaltern). Benutzer sollten sie jedoch im Allgemeinen nicht berühren: Sie dürfen sie weder verwenden noch definieren.

    
Dietmar Kühl 01.01.2012 11:18
quelle
3

Ja. Aber dieses Zitat behandelt das nicht (wie Sie es selbst wissen).

Hier ist, was ich denke, gilt das:

  

17.4.3.1.3 Externe Verknüpfung

     

3. Jeder Name mit zwei aufeinander folgenden Unterstrichen (2.11) ist für die Implementierung als Name mit externer C- und externer C ++ - Verknüpfung reserviert.

Ich denke, es gilt für die Variablen, die mit externer Verknüpfung in anonymen Namespaces deklariert werden, aber es sollte beachtet werden, dass es sich um doppelte Unterstriche handelt. Also:

%Vor%

Ein allgemeineres Thema:

Nawaz 01.01.2012 05:57
quelle

Tags und Links