Подтвердить что ты не робот

Существует ли ограничение на длину имен идентификаторов в С++?

Есть ли ограничение по длине имен переменных в С++? Что это? Это имеет какое-либо отношение к "64/32-битности" машины?

EDIT: В частности, что такое ограничение GCC?

4b9b3361

Ответ 1

раздел lex.name стандарта С++ говорит

Идентификатор представляет собой произвольно длинную последовательность букв и цифр.

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

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

Пределы могут ограничивать количества, которые включают в себя описанные ниже или другие. Число в скобках после каждой величины рекомендуется как минимум для этой величины. Однако эти величины являются только рекомендациями и не определяют соответствия.


Для gcc пределы:

Препроцессор: без ограничений

Язык C: без ограничений

С++: Вероятно, такой же, как C, никакого отдельного ограничения не зарегистрировано. "Некоторые варианты задокументированы в соответствующем документе для языка C"

Linker (управляет внешними именами, связанными между модулями компиляции): Только для платформы, часто неограниченно

Ответ 2

В MS Visual Studio 2003-2012 максимальная длина идентификатора составляет 2047 символов (за MSDN).