11.2 Пределы реализации
CPP имеет небольшое количество внутренних ограничений. В этом разделе перечислены ограничения, которые стандарт C требует не быть ниже определённого минимума, а также все другие известные ограничения. Цель состоит в том, чтобы таких ограничений было как можно меньше. Если вы столкнётесь с недокументированным или неудобным ограничением, пожалуйста, сообщите об этом как об ошибке. См. Отчёт об ошибках.
Когда мы говорим, что что-то ограничено только доступной памятью, это означает, что внутренние структуры данных не накладывают никаких собственных ограничений, а пространство выделяется с помощью malloc или эквивалентного метода. Фактическое ограничение, следовательно, будет зависеть от многих факторов, таких как размер других выделенных компилятором объектов в одно и то же время, объём памяти, потребляемый другими процессами на том же компьютере и т. д.
- Уровни вложенности файлов ‘
#include’.Мы накладываем произвольное ограничение в 200 уровней, чтобы избежать бесконечной рекурсии. Стандарт требует как минимум 15 уровней.
- Уровни вложенности условных включений.
Стандарт C предписывает, что этот показатель должен быть как минимум 63. CPP ограничен только доступной памятью.
- Уровни вложенных скобок в полном выражении.
Стандарт C требует, чтобы этот показатель был как минимум 63. В выражениях препроцессора он ограничен только доступной памятью.
- Значимые начальные символы в идентификаторе или имени макроса.
Препроцессор рассматривает все символы как значимые. Стандарт C требует, чтобы значимыми были только первые 63.
- Количество одновременно определённых макросов в одном едином файле трансляции.
Стандарт требует, чтобы количество таких макросов было как минимум 4095. CPP ограничен только доступной памятью.
- Количество параметров в определении макроса и аргументов в вызове макроса.
Мы допускаем
USHRT_MAX, что не меньше 65 535. Минимальное значение, требуемое стандартом, составляет 127. - Количество символов на логической строке исходного кода.
Стандарт C требует, чтобы это количество было как минимум 4096. CPP не накладывает ограничений на это, но при обработке диагностических сообщений вы можете получить некорректные номера столбцов для строк, длина которых превышает 65 535 символов.
- Максимальный размер файла исходного кода.
Стандарт не устанавливает нижнего предела максимального размера файла исходного кода. GNU cpp отображает файлы в памяти, поэтому он ограничен доступным адресным пространством. Обычно это как минимум два гигабайта. В зависимости от операционной системы размер физической памяти может или не может являться ограничением.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/cpp/Implementation-limits.html