typedef CFString, начинающийся с __
typedef const struct __CFString * a1;
В приведенном выше объявлении typedef говорится, что a1 определяется как указатель на постоянную структуру __CFString.
Вот что значит "__"?
Затем я создаю новое определение как a2, описанное ниже.
typedef const struct CFString * a2;
Итак, чем a1 отличается от a2?
1 ответ
Решение
Прежде всего, подчеркивания в __CFString
являются частью имени, так struct __CFString
а также struct CFString
разные типы, так же, как struct XXCFString
а также struct CFString
разные типы.
Во-вторых, любое имя, начинающееся с двойного подчеркивания, зарезервировано для реализации. Другими словами, вы не можете использовать имена, начинающиеся с двойного подчеркивания, не рискуя столкновением имен.
Вот еще один SO-ответ с более подробной информацией: каковы правила использования подчеркивания в идентификаторе C++?