Есть ли ограничение на длину имен идентификаторов в C ++? - PullRequest
12 голосов
/ 12 сентября 2011

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

РЕДАКТИРОВАТЬ: В частности, какой предел GCC?

Ответы [ 2 ]

23 голосов
/ 12 сентября 2011

раздел lex.name стандарта C ++ гласит:

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

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

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

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


Для gcc ограничения:

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

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

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

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

7 голосов
/ 03 октября 2012

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

...