Длина идентификатора Max

Где я могу найти то, что максимальная длина идентификатора в C?

В котором, заголовочном файле что определяется предел?

11
задан Devel 28 February 2010 в 19:03
поделиться

3 ответа

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

Стандарт C , раздел 5.2.4.1 гласит:

  • 63 значимых начальных символа во внутреннем идентификаторе или имени макроса (каждое имя универсального символа или расширенный исходный символ считается одиночным символом)
  • 31 значимый начальный символ во внешнем идентификаторе (каждое имя универсального символа определяет короткий идентификатор 0000FFFF или менее считается 6 символов, каждое универсальное имя символа, определяющее короткий идентификатор 00010000 или более, считается 10 символов, и каждый расширенный исходный символ считается таким же количеством символов, что и соответствующее универсальное имя символа, если таковое имеется )

Он также содержит сноску:

Реализации должны избегать наложения фиксированных ограничений на перевод, когда это возможно.

Поэтому вам следует проверить свою документацию, чтобы узнать, поддерживает ли ваш компилятор большее количество значащих символов в идентификаторах.

23
ответ дан 3 December 2019 в 01:44
поделиться

Нет заголовка, который сообщает вам. Вы должны принять обоснованное решение, исходя из платформ, на которые вы, вероятно, будете переносить. Карл Норум указал на то, что говорит стандарт C99.

Когда-то вы могли полагаться только на 6 уникальных символов в одном регистре для внешних переменных - потому что это было то, что предоставляли некоторые среды мэйнфреймов. (Это то, что сказал стандарт C89, но он отметил, что ограничение было болезненным.)

В наши дни, отчасти из-за типобезопасной связи в C ++, вы можете разумно полагаться на гораздо более длинные имена для внешних символов. Если вы начнете дрейфовать выше 31 символа, вы можете столкнуться с проблемами - но вы также столкнетесь с проблемами читаемости.

10
ответ дан 3 December 2019 в 01:44
поделиться

Короче говоря, не существует файла заголовка, который бы сообщил вам об этом, он является частью спецификаций стандарта ANSI / ISO C, который определяет структуру синтаксиса и механизма среды для самого языка C. В стандартах до C89 максимальная длина идентификатора составляла 6 из-за небольшого объема памяти и среды в таких системах, как мэйнфреймы и системы * nix.

Сегодня последний стандарт - это стандарты C99, которые предписывают, что максимальная длина идентификатора должна быть 32, причина довольно проста и логична ... компилятор работает, анализируя входной поток, который будет передан как команда line, makefile или решение (для сред Microsoft Visual Studio), синтаксический анализатор является жестким и фиксированным, и, следовательно, накладываются ограничения на длину идентификатора, так что синтаксический анализатор может смотреть вперед и видеть, есть ли еще символы. Это связано с этим.

Другая причина заключается в том, что большинство компиляторов C ++ используют изменение имен идентификаторов, что, как указал Джонатан Леффлер, может сбить с толку компилятор, а также компоновку кода.

3
ответ дан 3 December 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: