Почему люди используют __ (двойное подчеркивание) так много в C ++

Я просматривал некоторый код с открытым исходным кодом на C ++ и замечал много двойных оценок, используемых в коде, главным образом в начале имен переменных.

return __CYGWIN__; 

Просто интересно, есть ли причина для этого, или это просто некоторые стили кода для людей? Я бы подумал, что мне трудно читать.

    От программирования на C ++, правил и рекомендаций :

    Использование двух символов подчеркивания (`__ ‘) в идентификаторах зарезервировано для внутреннего использования компилятора в соответствии со стандартом ANSI-C.

    Подчеркивания (`_ ‘) часто используются в именах библиотечных функций (таких как« _main »и« _exit »). Чтобы избежать столкновений, не начинайте идентификатор с подчеркивания.

    Если они не считают, что они являются «частью реализации», то есть стандартными библиотеками, то они не должны.

    Правила довольно специфичны и немного более детализированы, чем предлагали некоторые другие.

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

    Кроме того, все остальные идентификаторы, начинающиеся с подчеркивания (т. Е. Не сопровождаемые другим подчеркиванием или заглавной буквой), зарезервированы для реализации в глобальной области. Это означает, что вы можете использовать эти идентификаторы в своих собственных пространствах имен или в определениях classов.

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

    Согласно стандарту C ++, идентификаторы, начинающиеся с одного символа подчеркивания, зарезервированы для библиотек. Идентификаторы, начинающиеся с двух символов подчеркивания, зарезервированы для поставщиков компиляторов.

    Вышеупомянутые комментарии верны. __Symbol__ – это, как правило, волшебный токен, предоставляемый вашим полезным компилятором (или препроцессором). Возможно, наиболее широко используемыми из них являются __FILE__ и __LINE__ , которые расширяются препроцессором C, чтобы указать текущее имя файла и номер строки. Это удобно, если вы хотите зарегистрировать какой-то отказ в утверждении программы, включая текстовое местоположение ошибки.

    Это то, что вы не собираетесь делать в «нормальном» коде. Это гарантирует, что компиляторы и системные библиотеки могут определять символы, которые не будут сталкиваться с вашими.

    В дополнение к библиотекам, о которых многие другие люди ответили, некоторые люди также называют macros или #define значения для использования с препроцессором. Это упростит работу и, возможно, позволит обрабатывать ошибки в старых компиляторах.

    Как и другие упоминаемые, это помогает предотвратить столкновение имен и помогает разграничить между библиотечными переменными и вашими собственными.

    Давайте будем гением компьютера.