typedef CFString beginnend mit __
-
21-12-2019 - |
Frage
typedef const struct __CFString * a1;
In der obigen Typedef-Deklaration heißt es, dass a1 als Zeiger auf die konstante Struktur __CFString definiert ist.
Was bedeutet hier „__“?
Dann erstelle ich eine neue Definition als a2, wie unten beschrieben.
typedef const struct CFString * a2;
Wie unterscheidet sich a1 von a2?
Lösung
Zunächst einmal die Unterstriche in __CFString
sind Teil des Namens, also struct __CFString
Und struct CFString
sind verschiedene Typen, genau wie struct XXCFString
Und struct CFString
sind verschiedene Typen.
Zweitens ist jeder Name, der mit einem doppelten Unterstrich beginnt, für die Implementierung reserviert.Mit anderen Worten: Sie können keine Namen verwenden, die mit einem doppelten Unterstrich beginnen, ohne eine Namenskollision zu riskieren.
Hier ist eine weitere SO-Antwort mit weiteren Details: Welche Regeln gelten für die Verwendung eines Unterstrichs in einem C++-Bezeichner?