Рассмотрим это в (возможно, вложенном) объеме метода (функции, блока и т.д.):
int _ = 42;
Существуют ли какие-либо технические причины, чтобы избежать локальной переменной с именем _
?
Некоторые рекомендации для этого вопроса:
_
обычно префиксы переменных экземпляра Objective-C. Оставьте это в стороне. Комментарий к другим столкновениям с конвенцией приветствуется.† Купите мне пинту, и вы можете рассказать мне все об этом. :)
C99 §7.1.3 гласит, что все идентификаторы, начинающиеся с хотя бы одного подчеркивания, зарезервированы для использования реализацией только в качестве идентификаторов области. 1_
- это идентификатор, начинающийся как минимум с одного подчеркивания, поэтому вы не должны каким-либо образом определять его в области файлов. 2
Однако, как локальное имя переменной, _
является справедливой игрой для прикладного программиста. Только идентификаторы, начинающиеся с двух знаков подчеркивания, или подчеркивания, а затем заглавной буквы, зарезервированы безоговорочно.
Эти правила больше соблюдаются в нарушении, чем соблюдение, как показывают сноски.
1 Да, это означает, что очень распространенная практика запуска имен функций "только для внутреннего использования" с буквой " _
за которой следует строчная буква, является технически нарушением соответствия.
2GNU gettext - известная сторонняя библиотека, которая нарушает это правило; программисту рекомендуется #define _(x) gettext(x)
как сокращенное.
Чтобы ответить на ваш вопрос просто - нет, нет никаких технических причин, чтобы его избежать. Однако многие другие причины.