Unterstriche "_" in Namen und die Probleme die sie verursachen



  • Beziechner (Namen) die "" enthalten sind vom C++ Standard her für den Compiler reserviert, d.h. wenn ihr "" in euren Bezeichnern habt lauf ihr Gefahr mit den Compiler in Konflikt zu geraten.
    Da der Compiler hier aber solche Fehler nicht erwartet, könnte es sein das er mit einer nichts sagender Fehlermeldung Abstürzt (wollte ihr das wirklich riskieren?).

    Ähnlich ist es auch mit "_", das darf nicht als Präfix vor globalen Bezeichnen benutzt werden und wenn der nachfolgende Buchstabe ein Grossbuchstabe ist.

    #ifndef _FOO_H_  // nicht ok
    #define _FOO_H_  // s.o.
    
    class _foo       // das ist nicht ok weil _foo in Globalen namespace ist
    {
         int _count; // _count ist kein Globaler Bezeichner also ok
         int _Bar;   // nicht ok weil das B groß ist
         int a_;     // ok
         int b__s;   // nicht ok weil zwei __
         int m_var;  // ok
    };
    
    #endif // #ifndef _FOO_H_
    

    Am Besten ihr benutz kein "_" Präfix vor Bezeichnern, das rate nicht nur ich sondern auch Scott Meyers.

    Genauer nach zu lesen im C++ Standard unter 17.4.3.1.2

    17.4.3.1.2 Global names
    1 Certain sets of names and function signatures are always reserved to the implementation:

    • — Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase
      letter (2.11) is reserved to the implementation for any use.
    • — Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.165)

    [ Dieser Beitrag wurde am 04.12.2002 um 19:15 Uhr von Dimah editiert. ]


Anmelden zum Antworten