typedef CFString começando com __
-
21-12-2019 - |
Pergunta
typedef const struct __CFString * a1;
Na declaração typedef acima diz que a1 é definido como um ponteiro para a estrutura constante __CFString.
Aqui, o que significa "__"?
Então crio uma nova definição como a2, descrita abaixo.
typedef const struct CFString * a2;
Então, como a1 é diferente de a2?
Solução
Em primeiro lugar, os sublinhados em __CFString
fazem parte do nome, então struct __CFString
e struct CFString
são tipos diferentes, assim como struct XXCFString
e struct CFString
são tipos diferentes.
Segundo, qualquer nome que comece com um sublinhado duplo é reservado para a implementação.Em outras palavras, você não pode usar nomes que começam com sublinhado duplo sem correr o risco de uma colisão de nomes.
Aqui está outra resposta do SO com mais detalhes: Quais são as regras para usar um sublinhado em um identificador C++?