Warum benutzen Leute __ (doppelter Unterstrich) so sehr in C ++?
Wurde ich mit einem Blick durch einige open-source-C++ - code, und beachten Sie eine Menge von Doppel-Rahmen erzielt, wo im code verwendet, vor allem am Anfang von Variablennamen.
return __CYGWIN__;
Nur Fragen, gibt es einen Grund dafür, oder ist es nur einige Leute-code-Formate? Ich würde denken, dass ich es schwierig macht, zu Lesen.
Kommentar zu dem Problem
Warum schwer zu Lesen? Es wurde entwickelt, meist als delimeter, genau wie Zitate. Soweit ich mich erinnere, ist es vor allem für builtin-Konstanten.
InformationsquelleAutor der Frage Nathan W | 2008-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom Programmierung in C++, Regeln und Empfehlungen :
InformationsquelleAutor der Antwort maccullt
Wenn Sie das Gefühl haben, dass Sie "Teil der Implementierung", also die standard-Bibliotheken verwenden, sollten Sie auch nicht.
Die Regeln sind ziemlich spezifisch, und sind etwas Ausführlicher als andere vorgeschlagen haben.
Alle Bezeichner, enthalten einen doppelten Unterstrich oder mit einem Unterstrich beginnen, gefolgt von einem Großbuchstaben sind ausschließlich für die Umsetzung auf alle Bereiche, d.h. Sie kann verwendet werden, für die Makros.
Zusätzlich, alle anderen Bezeichner beginnen mit einem Unterstrich (D. H. nicht gefolgt von einem weiteren Unterstrich oder einem Großbuchstaben) sind reserviert für die Umsetzung auf globaler Ebene. Dies bedeutet, dass diese Kennungen können Sie in Ihrem eigenen namespaces oder Klassen-Definitionen.
Dies ist der Grund, warum Microsoft die Funktion, mit der Namen mit einem führenden Unterstrich und alles in Kleinbuchstaben für viele Ihrer Kern-runtime-library-Funktionen, die nicht Teil der C++ - standard. Diese Funktionsnamen sind garantiert nicht zu kollidieren entweder mit standard-C++ - Funktionen oder Benutzer-code-Funktionen.
InformationsquelleAutor der Antwort CB Bailey
Entsprechend der C++ - Standard-Bezeichner beginnen mit einem Unterstrich beginnen, sind reserviert für Bibliotheken. Bezeichner beginnen mit zwei Unterstrichen sind reserviert für den compiler-Hersteller.
InformationsquelleAutor der Antwort James Curran
Die vorstehenden Kommentare sind korrekt.
__Symbol__
ist in der Regel ein magic token zur Verfügung gestellt, die durch Ihre hilfreiche compiler (oder Präprozessor) Verkäufer. Vielleicht die am meisten verbreitete von diesen ist__FILE__
und__LINE__
, die erweitert werden durch den C-Präprozessor, um die aktuelle Dateiname und Zeilennummer. Das ist praktisch, wenn Sie sich einloggen möchten irgendeine Art von Programm assertion-Fehler, einschließlich der textuellen Position des Fehlers.InformationsquelleAutor der Antwort bog
Es ist etwas, was man nicht tun sollte in den "normalen" code. Dieser sorgt dafür, dass Compiler und system-Bibliotheken können Symbole definieren, die nicht kollidieren mit Ihnen.
InformationsquelleAutor der Antwort Menkboy
Neben Bibliotheken, die viele andere Menschen reagierten über Manche Leute auch Namen von Makros und #define-Werte für die Verwendung mit dem Präprozessor. Dies macht es einfacher, mit zu arbeiten, und mögen gestattet haben, die bugs, die in älteren Compilern umgangen werden.
Wie andere erwähnt haben, es hilft zu verhindern, dass Namen Kollision und hilft, um die Abgrenzung zwischen Bibliothek Variablen und Ihre eigenen.
InformationsquelleAutor der Antwort Sqeaky