typedef CFString que comienza con __
-
21-12-2019 - |
Pregunta
typedef const struct __CFString * a1;
En la declaración de typedef anterior se dice que a1 se define como un puntero a la estructura constante __CFString.
¿Qué significa aquí "__"?
Luego creo una nueva definición como a2, que se describe a continuación.
typedef const struct CFString * a2;
Entonces, ¿en qué se diferencia a1 de a2?
Solución
En primer lugar, los guiones bajos en __CFString
son parte del nombre, entonces struct __CFString
y struct CFString
son diferentes tipos, al igual que struct XXCFString
y struct CFString
son diferentes tipos.
En segundo lugar, cualquier nombre que comience con un doble guión bajo está reservado para la implementación.En otras palabras, no puedes usar nombres que comiencen con un guión bajo doble sin correr el riesgo de una colisión de nombres.
Aquí hay otra respuesta SO con más detalles: ¿Cuáles son las reglas para usar un guión bajo en un identificador de C++?