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?

¿Fue útil?

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++?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top