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

Другие вопросы по тегам