typedef CFString, начинающийся с __
-
21-12-2019 - |
Вопрос
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 ++?