Вопрос

typedef const struct __CFString * a1;

В приведенном выше объявлении typedef говорится, что a1 определяется как указатель на постоянную структуру __CFString.

Здесь что означает "__"?

Затем я создаю новое определение как a2, описанное ниже.

typedef const struct CFString * a2;

Итак, чем a1 отличается от a2?

Это было полезно?

Решение

Прежде всего, подчеркивания в __CFString являются частью названия, так что struct __CFString и struct CFString это разные типы, точно так же, как struct XXCFString и struct CFString бывают разных типов.

Во-вторых, любое имя, начинающееся с двойного подчеркивания, зарезервировано для реализации.Другими словами, вы не можете использовать имена, начинающиеся с двойного подчеркивания, без риска столкновения имен.

Вот еще один ответ SO с более подробной информацией: Каковы правила использования символа подчеркивания в идентификаторе C ++?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top