Стандарт C / C ++ резервирует все идентификаторы, которые либо ведут с подчеркиванием (плюс заглавная буква, если не в глобальном пространстве имен), либо содержат два или более смежных подчеркивания .Пример:
int _myGlobal;
namespace _mine
{
void Im__outta__control() {}
int _LivingDangerously;
}
Но что, если мне просто все равно?Что если я решу жить опасно и все равно использовать эти «зарезервированные» идентификаторы?Насколько опасно я буду жить?
Вы когда-нибудь видели проблему с компилятором или компоновщиком, возникающую из-за использования зарезервированных идентификаторов по коду пользователя?
Ответы ниже до сих пор составляют, "Зачем нарушать правила, если это может вызвать проблемы?"Но представьте, что у вас уже есть код, который нарушает правила.В какой момент издержки, связанные с нарушением правил, перевесят затраты на рефакторинг кода для соответствия?Или что, если программист разработал персональный стиль кодирования, который требовал диких подчеркиваний (например, возможно, из другого языка)?Предполагая, что изменение их стиля кодирования было для них более или менее болезненным, что могло бы побудить их преодолеть боль?
Или я мог бы задать тот же вопрос в обратном порядке.Что конкретно делают библиотеки C / C ++ с зарезервированными словами, от которых пользователь может упасть?Они объявляют глобалы, которые могут привести к конфликтам именФункции?Классы?Естественно, каждая библиотека отличается, но как в целом может проявиться это столкновение?
Я учу студентов-программистов, которые приходят ко мне с такими вопросами, и все, что я могу им сказать, это: «Это против правил."Это суеверный, махающий рукой ответ.Более того, за двадцать лет программирования на C ++ я никогда не видел ошибок компилятора или компоновщика, которые возникали в результате нарушения правил зарезервированных слов.
Хороший скептик, столкнувшись с каким-либо правилом, спрашивает: «Почему мне это нужно?»Итак: почему я должен заботиться?