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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top